次の方法で共有


グルーピング(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の 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 は、標準の null 値から、ROLLUP、CUBE、または GROUPING SETS によって返される null 値を区別するために使用します。 ROLLUP、CUBE、または GROUPING SETS の演算結果として返される NULL 値は、NULL の特別な用途です。 これは、結果セット内の列プレースホルダーとして機能し、すべてを意味します。

以下の例は、AdventureWorks2025データベース内のSaleYTD金額をSalesQuota・集約しています。 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 の演算によって追加された集計行にあります。 集計行は、すべての TotalSalesYTD グループについての SalesQuota の総量を表し、1 列の Grouping によって示されます。

結果セットは次のとおりです。

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)
グループ別(Transact-SQL)