次の方法で共有


GROUPING (Transact-SQL)

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

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで)

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

構文

GROUPING ( <column_expression> )

引数

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

戻り値の型

tinyint

説明

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

使用例

次の例では、SalesQuota をグループ化し、AdventureWorks2012 データベースの 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)