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