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 空值的列。
返回类型
intsql
示例:ide
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示例:sqlserver
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)server