;WITH CTE AS (
SELECT [RGTCID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Collection]
cross apply RGTCData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs AS(
select y.t_str,count(distinct x.RGTCID) CollectionCount from cte x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
)
,CTE2 AS (
SELECT [RGTBID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Brand]
cross apply RGTBData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs2 AS(
select y.t_str,count(distinct x.RGTBID) CollectionCount from cte2 x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
)
,CTE3 AS (
SELECT [RGTGID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Guru]
cross apply RGTSData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs3 AS(
select y.t_str,count(distinct x.RGTGID) CollectionCount from cte3 x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
)
,CTE4 AS (
SELECT [RGTSID]
,ltrim(rtrim(T.N.value('.','varchar(100)'))) as Querystr
FROM [R_GT_Story]
cross apply RGTSData.nodes('//*[@data-type="Collection"]/@Query') T(N)
where N.value('../@data-from','varchar(100)') is null
)
,CollectionIDs4 AS(
select y.t_str,count(distinct x.RGTSID) CollectionCount from cte4 x
CROSS APPLY dbo.f_split(SUBSTRING(Querystr,CHARINDEX('(',Querystr)+1,CHARINDEX(')',Querystr)-CHARINDEX('(',Querystr)-1),',') y
group by y.t_str
) select c.CollectionID,isnull(m.CollectionCountSum,0) as CollectionCountSum FROM [R_GT_Collection] c
left join (
select t_str,sum(CollectionCount) as CollectionCountSum from (
select t_str,CollectionCount from CollectionIDs
union all
select t_str,CollectionCount from CollectionIDs2
union all
select t_str,CollectionCount from CollectionIDs3
union all
select t_str,CollectionCount from CollectionIDs4
) z
group by t_str
) m
on c.CollectionID=m.t_str
order by 1

一个Sql备注的更多相关文章

  1. mysql中如何在命令行中,执行一个SQL脚本文件?

    需求描述: 在mysql数据库的使用中,有的时候,需要直接在shell的命令行中,执行某个SQL脚本文件, 比如,要初始化数据库,创建特定的存储过程,创建表等操作,这里进行一个基本的测试. 一般情况, ...

  2. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  3. MySQL GROUP_CONCAT函数使用示例:如何用一个SQL查询出一个班级各个学科第N名是谁?

    如何用一个SQL查询出一个班级各个学科第N名是谁? 首先贴出建表语句,方便大家本地测试: -- 建表语句 CREATE TABLE score ( id INT NOT NULL auto_incre ...

  4. 一个 Sql语句优化的问题- STATISTICS 统计信息

    前段时间,同事遇到一个 Sql语句的问题,一个列表分页功能响应在30 s以上,看数据库里面的数据条数,数据量也不大,相关字段的一些索引也都有,可就是慢.于是找出具体的sql 语句出来分析,分页功能主要 ...

  5. 用scala实现一个sql执行引擎-(上)

    前言 在实时计算中,通常是从队列中收集原始数据,这种原始数据在内存中通常是一个java bean,把数据收集过来以后,通常会把数据落地到数据库,供后面的ETL使用.举个一个简单的例子,对一个游戏来说, ...

  6. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

    我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...

  7. 一个SQL Server 2008 R2 死锁的问题解决

    问题场景:在客户那碰到一个操作卡死的现象 问题解决: 1.如何挂钩是死锁问题:通过代码跟踪,发现是指执行一个SQL语句超时,因此猜想可能是表锁住了 2.如果确认是思索问题:通过SQL发现死锁,以下是相 ...

  8. 一个sql导致temp表空间爆掉

    Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中.于是就写 ...

  9. 自己实现一个SQL解析引擎

    自己实现一个SQL解析引擎 功能:将用户输入的SQL语句序列转换为一个可运行的操作序列,并返回查询的结果集. SQL的解析引擎包含查询编译与查询优化和查询的执行,主要包含3个步骤: 查询分析: 制定逻 ...

随机推荐

  1. Python 自动化测试config配置文件ini 配置目录

    import ConfigParserimport os path = os.path.join(os.path.dirname(__file__), 'config.ini').replace('\ ...

  2. Java-Runoob:Java 教程

    ylbtech-Java-Runoob:Java 教程 1.返回顶部 1. Java 教程 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言. Java可运行于 ...

  3. Maria数据库

    项目上要进行数据库选型,业务上来讲,数据是非常结构化的数据,使用传统关系数据库更适合:另外项目采用微服务框架,每个服务的数据库应该尽可能轻量级, 最后考虑Maria数据库. MariaDB简介: Ma ...

  4. Dynamics CRM 2011 WebResources

    Type Limitation Capabilities Usage Images JPG,   PNG, GIF, ICO Custom entity icons Icons for custom ...

  5. 自定义条件判断两对象相等Equals的方法

    自定义两对象是否相等方法,必须用到GetHashCode方法,如 public class AirspaceCompareByUUID : IEqualityComparer<AIRSPACE_ ...

  6. 关闭PdfReader右侧工具栏的方法

    1.首先单次关闭工具栏 点击视图-显示/隐藏-工具窗格,关闭右侧工具栏,但下次打开pdf还会出来,所以: 2.记住设置状态 编辑-首选项-文档-记住工具窗格当前状态

  7. Delphi IOS 蓝牙锁屏后台运行

    Delphi IOS 后台运行 同样的程序,编译成android,锁屏后继续运行正常,蓝牙通讯正常,但在IOS下锁屏后程序的蓝牙就中断通讯了? IOS的机制就是这样,锁屏就关闭了. 音乐播放器是怎么做 ...

  8. VS2008与MATLAB R2007a混合编程配置过程

    系统平台:windows xp sp2, visual studio 2008 professional, matlab R2007a 首先,为了使matlab 能够找到vs2008编译器,需要下载以 ...

  9. 【286】◀▶ Python 内置函数说明

    参考: Python 内置函数 01   abs() 返回数字的绝对值. 02   all() 用于判断给定的可迭代参数 iterable 中的所有元素是否不为 0.''.False 或者 itera ...

  10. 通过window.crypto.getRandomValues获得一个大于零的随机数

    window.crypto.getRandomValues(new Uint32Array(1))[0]; 浏览器支持情况如下: IE: no IE Mobile: no Firefox24+ Fir ...