GROUPING (Transact-SQL)

适用于:yesSQL Server(所有支持的版本)YesAzure SQL 数据库YesAzure SQL 托管实例yesAzure Synapse Analytics

指示是否聚合 GROUP BY 列表中的指定列表达式。 在结果集中,如果 GROUPING 返回 1 则指示聚合;返回 0 则指示不聚合。 如果指定了 GROUP BY,则 GROUPING 只能用在 SELECT <select> 列表、HAVING 和 ORDER BY 子句中。

Topic link iconTransact-SQL 语法约定

语法

GROUPING ( <column_expression> )  

注意

若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

<column_expression>
列或者 GROUP BY 子句中包含列的表达式。

返回类型

tinyint

备注

GROUPING 用于区分标准空值和由 ROLLUP、CUBE 或 GROUPING SETS 返回的空值。 作为 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 下面显示两个 null 值。 第一个 NULL 代表从表中的这一列得到的 null 值组。 第二个 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)