共用方式為


GROUP BY 元件

GROUP BY 子句包含了下列元件:

  • 一或多個不包含彙總的運算式。它們通常參考到群組資料行 (Grouping Column)。
  • 選擇性的 ALL 關鍵字可指定傳回 GROUP BY 子句產生的所有群組,即使有些群組並沒有任何符合搜尋條件的資料行。
  • CUBE 或 ROLLUP。
  • 一般來說,HAVING 子句與 GROUP BY 子句一起使用,不過 HAVING 也可個別指定。

您可依照運算式來進行分組,只要它沒有包含彙總函數。例如:

SELECT DATEPART(yy, HireDate) AS Year,
       COUNT(*) AS NumberOfHires
FROM AdventureWorks.HumanResources.Employee
GROUP BY DATEPART(yy, HireDate)

以下為結果集: 

Year        NumberOfHires
----------- -------------
1997        2
2001        21
2000        45
1996        1
2003        3
1999        198
1998        16
2002        4

(8 row(s) affected)

在 GROUP BY 中,您必須指定資料表或檢視資料行的名稱,而非 AS 子句所指定的結果集資料行名稱。例如,您不能將 GROUP BY DATEPART(yy, HireDate) 子句替換成 GROUP BY Year。

您可以在 GROUP BY 子句中列出多個巢狀群組的資料行;也就是說,您可以依任何資料行組合來分組資料表。例如,此查詢將找出平均價格與今年度迄今的銷售總和,並以產品識別碼及特別優惠識別碼來加以分組:

USE AdventureWorks;
GO
SELECT ProductID, SpecialOfferID, AVG(UnitPrice) AS 'Average Price', 
    SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY ProductID, SpecialOfferID
ORDER BY ProductID
GO

請參閱

其他資源

SELECT (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助