首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

T-SQL GROUP BY GROUPING SETS:單一查詢替代多重 GROUP BY UNION

     編輯:關於SqlServer

場景

需依多維度彙總銷售訂單,傳統寫法多組 `GROUP BY` + `UNION ALL`。

GROUPING SETS 寫法

單一查詢列出所有分組集合:

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)。

多重 GROUP BY

GROUPING SETS

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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved