您的位置:首页 > 数据库

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: