需依多維度彙總銷售訂單,傳統寫法多組 `GROUP BY` + `UNION ALL`。
單一查詢列出所有分組集合:
SELECT SalesPersonID, TerritoryID, SUM(TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader
GROUP BY GROUPING SETS (
(SalesPersonID), -- 維度 1
(TerritoryID), -- 維度 2
(SalesPersonID, TerritoryID), -- 維度 1+2
() -- 總計
);
結果與多重 GROUP BY UNION 完全一致,但順序不同,語法更簡潔(圖 1-2)。


SQL 2008+ 支援,純語法糖但大幅提升可讀與維護性。