GROUPING (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库
指示是否聚合 GROUP BY 列表中的指定列表达式。 在结果集中,如果 GROUPING 返回 1 则指示聚合;返回 0 则指示不聚合。 如果指定了 GROUP BY,则 GROUPING 只能用在 SELECT <select> 列表、HAVING 和 ORDER BY 子句中。
语法
GROUPING ( <column_expression> )
参数
<column_expression>
列或者 GROUP BY 子句中包含列的表达式。
返回类型
tinyint
备注
GROUPING 用于区分标准空值和由 ROLLUP、CUBE 或 GROUPING SETS 返回的空值。 作为 ROLLUP、CUBE 或 GROUPING SETS 操作结果返回的 NULL 是 NULL 的特殊应用。 它在结果集内作为列的占位符,表示全体。
示例
以下示例将分组 SalesQuota
并聚合 AdventureWorks2022 数据库中的 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)