进行分组统计汇总,可以在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
执行下面的查询语句:
CUBE SELECT name,ProductID,SUM(Sales) AS 'SalesTotal'FROM dbo.table_1GROUP BY name,ProductIDWITH CUBEORDER BY name,ProductIDROLLUP 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
相关资源:数据结构—成绩单生成器