参考下面的代码:
select DATEPART(ISO_WEEK,’2010-1-3’) –返回53 select DATEPART(ISO_WEEK,’2010-1-4’) –返回1 select DATEPART(ISO_WEEK,’2009-1-1’) –返回1 |
5.ROLLUP、CUBE 和GROUPING SETS
在SQL Server 2008之前,进行分组统计汇总,可以在GROUP BY子句中使用WITH ROLLUP和WITH CUBE参数。ROLLUP指定在结果集内不仅包含由GROUP BY提供的行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。而CUBE参数则在使用ROLLUP参数所返回结果集的基础上,再将每个可能的组和子组组合在结果集内返回。
例如,假设dbo.T1表中存在下列数据:
执行下面的查询语句:
select CustName,ProductID,SUM(Sales) AS ’SalesTotal’ FROM dbo.T1 GROUP BY CustName,ProductID WITH CUBE ORDER BY CustName,ProductID; select CustName,ProductID,SUM(Sales) AS ’SalesTotal’ FROM dbo.T1 GROUP BY CustName,ProductID WITH ROLLUP ORDER BY CustName,ProductID; |
得到下面的结果集合,可以看出,使用WITH CUBE多出了对子组ProductID的两行汇总。
而在SQL Server 2008中,GROUPING SETS、ROLLUP 和 CUBE 运算符已添加到 GROUP BY 子句中。不再推荐使用不符合 ISO 的 WITH ROLLUP、WITH CUBE 和 ALL 语法。在SQL Server 2008中,可以将上面的WITH CUBE语句改写为如下的形式:
select CustName,ProductID,SUM(Sales) AS ’SalesTotal’ FROM dbo.T1 GROUP BY CUBE(CustName,ProductID) ORDER BY CustName,ProductID; |
如果不需要获得由完备的 ROLLUP 或 CUBE 运算符生成的全部分组,则可以使用 GROUPING SETS 仅指定所需的分组。例如,下面的语句将得到分别按CustName和ProductID分组汇总结果集的并集。
select CustName,ProductID,SUM(Sales) AS ’SalesTotal’ FROM dbo.T1 GROUP BY GROUPING SETS(CustName,ProductID) ORDER BY CustName,ProductID; |
结果集如下:
上面的语句等同于下面的union ALL语句:
select CustName,NULL AS ProductID,SUM(Sales) AS ’SalesTotal’ FROM dbo.T1 GROUP BY CustName union ALL select NULL AS CustName,ProductID,SUM(Sales) AS ’SalesTotal’ FROM dbo.T1 GROUP BY ProductID |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SQL Server 2016新变化:内存中OLTP功能大改进
SQL Server 2016的许多功能得到改进,内存中OLTP(in-memory OLTP)也不例外,包括扩展性、性能以及扩展T-SQL用于使用和管理内存优化表的功能方面。
-
优化T-SQL提升SQL Server数据库性能
本文中提供了八种优化T-SQL代码避免SQL Server数据库性能瓶颈的技巧,我们可以据此优化数据库应用。
-
配置SQL Server数据库恢复模式的两种方法
本文我们讨论了配置SQL Server恢复模式的两种方式,用T-SQL或者SQL Server管理工具都可以修改恢复模式的设置。
-
用T-SQL在SQL Server 2012中创建用户自定义角色
SQL Server 2012中引入了两项功能,即创建用户自定义服务器角色和分配服务器级别的权限。本文为初级DBA给出了一个用户自定义服务器角色的示范用例。