GROUPING (Transact-SQL)
Указывает, является ли указанное выражение столбца в списке GROUP BY статистическим или нет. В результирующем наборе функция GROUPING возвращает 1 (статистическое выражение) или ноль (нестатистическое выражение). Функция GROUPING может использоваться только в предложениях SELECT <список выбора>, HAVING и ORDER BY, если указано предложение GROUP BY.
Синтаксические обозначения в Transact-SQL
Синтаксис
GROUPING ( <column_expression> )
Аргументы
- <column_expression>
Столбец или выражение, которое содержит столбец в предложении GROUP BY.
Типы возвращаемых данных
tinyint
Замечания
GROUPING используется, чтобы различать значения NULL, возвращаемые операторами ROLLUP, CUBE или GROUPING SETS, и стандартные значения NULL. Возвращение NULL в качестве результата операции ROLLUP, CUBE или GROUPING SETS является особым случаем использования NULL. Значение служит заполнителем столбца в результирующем наборе и означает «все».
Примеры
В следующем примере производится группирование SalesQuota и статистическая обработка сумм SaleYTD. Функция GROUPING применяется к столбцу SalesQuota.
USE AdventureWorks2012;
GO
SELECT SalesQuota, SUM(SalesYTD) 'TotalSalesYTD', GROUPING(SalesQuota) AS 'Grouping'
FROM Sales.SalesPerson
GROUP BY SalesQuota WITH ROLLUP;
GO
В результирующем наборе показаны два значения NULL в SalesQuota. Первый NULL представляет группу значений NULL из этого столбца в таблице. Второй 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)