GROUP BY 與 ROLLUP 和 CUBE
ROLLUP 運算子可用於生成包含小計和總計的報表。
-
CUBE 生成一個結果集,顯示所選列中所有值組合的聚合。
-
ROLLUP 生成一個結果集,顯示所選列中值的層次結構的聚合。
專案 顏色 數量 表 藍色 124 表 紅色 223 椅子 藍色 101 椅子 紅色 210
SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP
Item Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00
(7 排受影響)
如果查詢中的 ROLLUP 關鍵字更改為 CUBE,則 CUBE 結果集是相同的,除了在結尾返回這兩個額外的行:
ALL Blue 225.00
ALL Red 433.00
https://technet.microsoft.com/en-us/library/ms189305(v=sql.90).aspx