Partage via


GROUPING (Transact-SQL)

S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Point de terminaison analytique SQL dans Microsoft Fabric Entrepôt dans Microsoft Fabric

Indique si une expression de colonne spécifiée dans une liste GROUP BY est agrégée ou non. GROUPING retourne 1 pour agrégé ou 0 pour non agrégé dans le jeu de résultats. GROUPING ne peut être utilisé que dans les clauses de la liste <de sélection> SELECT, HAVING, ORDER BY lorsque GROUP BY est spécifié.

Conventions de la syntaxe Transact-SQL

Syntaxe

GROUPING ( <column_expression> )  

Arguments

<column_expression>
Colonne ou expression qui contient une colonne dans une clause GROUP BY.

Types de retour

tinyint

Notes

GROUPING sert à distinguer les valeurs NULL retournées par CUBE, ROLLUP ou GROUPING SETS des valeurs NULL standard. La valeur NULL retournée comme résultat d'une opération CUBE, ROLLUP ou GROUPING SETS est une utilisation spéciale de NULL. Elle agit comme espace réservé de colonne dans le jeu de résultats et signifie « All » (tout).

Exemples

L’exemple suivant groupe SalesQuota et agrège les montants SaleYTD dans la base de données AdventureWorks2022. La fonction GROUPING est appliquée à la colonne SalesQuota.

SELECT SalesQuota, SUM(SalesYTD) 'TotalSalesYTD', GROUPING(SalesQuota) AS 'Grouping'  
FROM Sales.SalesPerson  
GROUP BY SalesQuota WITH ROLLUP;  
GO  

Le jeu de résultats indique deux valeurs NULL sous SalesQuota. La première valeur NULL représente le groupe des valeurs NULL de cette colonne dans la table. La seconde valeur NULL se trouve dans la ligne résumée ajoutée par l'opération ROLLUP. La ligne du total indique les montants TotalSalesYTD pour tous les groupes SalesQuota et est indiquée par 1 dans la colonne Grouping.

Voici le jeu de résultats obtenu.

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)

Voir aussi

GROUPING_ID (Transact-SQL)
GROUP BY (Transact-SQL)