cube操作符
要使用cube,首先要了解group by 其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别, cube将返回的更多的可能组合。如果在 group by 子句中有n个列或者是有n个表达式的话, sqlserver在结果集上会返回2的n-1次幂个可能组合。 注意: 使用cube操作符时,最多可以有10个分组表达式 在cube中不能使用all关键字 GROUPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。 仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。 语法 GROUPING ( column_name ) 参数 column_name 是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。 返回类型 int示例:
select ACCNT_CODE,LEFT(PERIOD,4),SUM(AMOUNT) from TES_A_SALFLDG
WHERE ACCNT_CODE LIKE '160409%' GROUP BY ACCNT_CODE,LEFT(PERIOD,4) with rollup加Grouping示例:
select ACCNT_CODE,PERIOD,JRNAL_NO,SUM(AMOUNT) from TES_A_SALFLDG
WHERE ACCNT_CODE LIKE '160409%' GROUP BY ACCNT_CODE,PERIOD,JRNAL_NO with rollup HAVING GROUPING(ACCNT_CODE)=0 AND GROUPING(PERIOD)+GROUPING(JRNAL_NO) IN (0,2)