GROUPING (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

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

Transact-SQL 構文表記規則

構文

GROUPING ( <column_expression> )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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

戻り値の型

tinyint

解説

GROUPING は、標準の null 値から、ROLLUP、CUBE、または GROUPING SETS によって返される null 値を区別するために使用します。 ROLLUP、CUBE、または GROUPING SETS の演算結果として返される NULL 値は、NULL の特別な用途です。 これは、結果セット内の列プレースホルダーとして機能し、すべてを意味します。

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

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 row(s) affected)

参照

GROUPING_ID (Transact-SQL)
GROUP BY (Transact-SQL)