Transact-sql 中的 rollup 和cube的使用
2008-11-12 14:37
429 查看
进行分组统计汇总,可以在GROUP BY子句中使用WITH ROLLUP和WITH CUBE参数。
ROLLUP指定在结果集内不仅包含由GROUP BY提供的行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。
而CUBE参数则在使用ROLLUP参数所返回结果集的基础上,再将每个可能的组和子组组合在结果集内返回。
例如,假设dbo.table_1表中存在下列数据:
name ProductID Sales
Kathy 1 10
Nick 1 10
Nick 2 30
Jane 1 10
Jane 2 30
执行下面的查询语句:
SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'
FROM dbo.table_1
GROUP BY name,ProductID
WITH CUBE
ORDER BY name,ProductID
SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'
FROM dbo.table_1
GROUP BY name,ProductID
WITH ROLLUP
ORDER BY name,ProductID;
得到下面的结果集合,可以看出,使用WITH CUBE多出了对子组ProductID的两行汇总。
with rollup 的结果集
Name ProductID total
-------------- ----------- -----
NULL NULL 90
Jane NULL 40
Jane 1 10
Jane 2 30
Kathy NULL 10
Kathy 1 10
Nick NULL 40
Nick 1 10
Nick 2 30
With Cube 的结果集
Name ProductID total
-------------- ----------- ------
NULL NULL 90
NULL 1 30
NULL 2 60
Jane NULL 40
Jane 1 10
Jane 2 30
Kathy NULL 10
Kathy 1 10
Nick NULL 40
Nick 1 10
Nick 2 30
ROLLUP指定在结果集内不仅包含由GROUP BY提供的行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。
而CUBE参数则在使用ROLLUP参数所返回结果集的基础上,再将每个可能的组和子组组合在结果集内返回。
例如,假设dbo.table_1表中存在下列数据:
name ProductID Sales
Kathy 1 10
Nick 1 10
Nick 2 30
Jane 1 10
Jane 2 30
执行下面的查询语句:
SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'
FROM dbo.table_1
GROUP BY name,ProductID
WITH CUBE
ORDER BY name,ProductID
SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'
FROM dbo.table_1
GROUP BY name,ProductID
WITH ROLLUP
ORDER BY name,ProductID;
得到下面的结果集合,可以看出,使用WITH CUBE多出了对子组ProductID的两行汇总。
with rollup 的结果集
Name ProductID total
-------------- ----------- -----
NULL NULL 90
Jane NULL 40
Jane 1 10
Jane 2 30
Kathy NULL 10
Kathy 1 10
Nick NULL 40
Nick 1 10
Nick 2 30
With Cube 的结果集
Name ProductID total
-------------- ----------- ------
NULL NULL 90
NULL 1 30
NULL 2 60
Jane NULL 40
Jane 1 10
Jane 2 30
Kathy NULL 10
Kathy 1 10
Nick NULL 40
Nick 1 10
Nick 2 30
相关文章推荐
- [转载 from SQL Server 2000 Help] SQL Server中汇总功能的使用GROUPING,ROLLUP和CUBE
- [SQL]详解CUBE和ROLLUP区别<使用rollup或cube通过交叉列可产生高级汇总结果集>
- Transact-SQL 使用 PIVOT 和 UNPIVOT 实现行与列之间的转化
- rollup、cube、grouping函数的使用心得
- SQL Server中汇总功能的使用GROUPING,ROLLUP和CUBE
- 如何使用Transact-SQL进行事务处理[示例]
- SQLServer中汇总功能的使用GROUPING,ROLLUP和CUBE
- oracle 的 group by 和 rollup,cube 的使用。
- ROLLUP、CUBE、GROUP BY的使用区别
- 如何遍历一个结果集在 SQL Server 中使用 Transact-SQL
- ROLLUP 与 CUBE 运算符的使用
- Sql + rollup + cube
- Transact-SQL不使用游标的两个循环方法_SQL技巧
- ORACLE ROLLUP和CUBE的使用(转)
- SQLSERVER中union,cube,rollup,cumpute运算符使用说明
- 如何使用 Transact-SQL 编写作业脚本(企业管理器)
- 使用CUBE和ROLLUP对数据进行汇总
- 【SQL Server技巧篇】如何使用Transact-SQL脚本语言导入Excel表
- oracle 中 rollup、cube、grouping 使用详解 -- 使用oracle 样例表演示
- sqlserver中的union,cube,rollup,cumpute运算符(汇总信息使用)