GROUPING (Transact-SQL)

GROUP BY リストの指定された列式が集計されるかどうかを示します。GROUPING は、集計される場合に 1、集計されない場合に 0 を結果セットで返します。GROUPING は、GROUP BY が指定されている場合に、SELECT <select> リスト、HAVING 句、および ORDER BY 句でのみ使用できます。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

GROUPING ( <column_expression> )

引数

  • <column_expression>
    列または GROUP BY 句の列が含まれた式です。

戻り値の型

tinyint

説明

GROUPING を使用して、ROLLUP、CUBE、または GROUPING SETS から返される NULL 値と標準的な NULL 値を区別します。ROLLUP、CUBE、または GROUPING SETS の演算結果として返される NULL 値は、NULL の特別な用途です。結果セット内の列のプレースホルダーとして動作し、すべてという意味を持ちます。

次の例では、SalesQuota をグループ化して SaleYTD 額を集計します。GROUPING 関数は、SalesQuota 列に適用されます。

USE AdventureWorks2008R2;
GO
SELECT SalesQuota, SUM(SalesYTD) 'TotalSalesYTD', GROUPING(SalesQuota) AS 'Grouping'
FROM Sales.SalesPerson
GROUP BY SalesQuota WITH ROLLUP;
GO

結果セットは、SalesQuota の下に 2 つの NULL 値を示します。最初の NULL 値は、テーブル内のこの列からの NULL 値で構成されるグループを表します。2 番目の NULL 値は、ROLLUP の演算によって追加された集計行にあります。集計行は、すべての SalesQuota グループについての TotalSalesYTD の総量を表し、Grouping 列の 1 によって示されます。

以下に結果セットを示します。

SalesQuota TotalSalesYTD Grouping

--------- ------------- --------

NULL 1533087.5999 0

250000.00 33461260.59 0

300000.00 9299677.9445 0

NULL 44294026.1344 1

(4 行処理されました)