共用方式為


GROUP BY 與 ALL

Transact-SQL 在 GROUP BY 子句中提供 ALL 關鍵字。ALL 只在 SELECT 陳述式也包含 WHERE 子句時才有意義。

ms175028.note(zh-tw,SQL.90).gif附註:
新版的 Microsoft SQL Server 將會移除 GROUP BY ALL。請避免在新的開發工作使用 GROUP BY ALL,並計劃修改目前使用此子句的應用程式。

GROUP BY ALL 不應該用在存取遠端資料表的查詢中。在這類查詢中如果同時有 WHERE 子句,該子句即不被支援,而且如果沒有使用 WHERE 子句,該子句也無法加入任何值。

如果使用 ALL,查詢結果將包含 GROUP BY 子句所產生的所有群組,即使有些群組並沒有任何資料列符合搜尋條件。如果沒有 ALL,包含 GROUP BY 的 SELECT 陳述式不會顯示沒有資料列符合資格的群組。

第一個範例僅針對數量大於 10 的 訂單產生群組。

第二個範例則為所有訂單產生群組。

對於沒有任何資料列符合資格的群組,包含彙總數值 (平均價格) 的資料行將為 NULL。

USE AdventureWorks;
GO
SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
FROM Sales.SalesOrderDetail
WHERE OrderQty > 10
GROUP BY ProductID
ORDER BY ProductID ;
GO

以下為結果集: 

ProductID   Average Price
707         20.7765
708         20.7482
709         6.175
711         20.7285
712         5.7592
714         32.05
.............................
(114 row(s) affected)

-- Using GROUP BY ALL
USE AdventureWorks;
GO
SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
FROM Sales.SalesOrderDetail
WHERE OrderQty > 10
GROUP BY ALL ProductID
ORDER BY ProductID ;
GO

以下為結果集: 

ProductID   Average Price
707         20.7765
708         20.7482
709         6.175
710         NULL
711         20.7285
712         5.7592
..............................
Warning: Null value is eliminated by an aggregate or other SET operation.

(266 row(s) affected)

請參閱

其他資源

ALL (Transact-SQL)
SELECT (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助