SQL SERVER中ROLLUP的用法

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

相關文章
相關標籤/搜索