Transact-sql 中的 rollup 和cube的使用

it2026-08-16  9

进行分组统计汇总,可以在GROUP BY子句中使用WITH ROLLUPWITH 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

执行下面的查询语句:

CUBE SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'FROM dbo.table_1GROUP BY name,ProductIDWITH CUBEORDER BY name,ProductID

 

ROLLUP SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'FROM dbo.table_1GROUP BY name,ProductIDWITH ROLLUPORDER 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

 

 

转载于:https://www.cnblogs.com/lfzwenzhu/archive/2008/11/12/1332046.html

相关资源:数据结构—成绩单生成器
最新回复(0)