GROUPING (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Gibt an, ob ein angegebener Spaltenausdruck in einer GROUP BY-Liste aggregiert wird oder nicht. GROUPING gibt im Resultset 1 für aggregiert oder 0 für nicht aggregiert zurück. GROUPING kann nur in der SELECT-<Auswahlliste> sowie den Klauseln HAVING und ORDER BY verwendet werden, wenn GROUP BY angegeben wurde.

Transact-SQL-Syntaxkonventionen

Syntax

GROUPING ( <column_expression> )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

<column_expression>
Eine Spalte oder ein Ausdruck, der eine Spalte in einer GROUP BY-Klausel enthält.

Rückgabetypen

tinyint

Bemerkungen

GROUPING wird verwendet, um die von ROLLUP, CUBE oder GROUPING SETS zurückgegebenen NULL-Werte von NULL-Standardwerten zu unterscheiden. Der Wert NULL, der als Ergebnis eines ROLLUP, CUBE oder GROUPING SETS-Vorgangs zurückgegeben wird, stellt eine besondere Verwendung von NULL dar. Der Wert fungiert als Spaltenplatzhalter im Resultset und bedeutet alle.

Beispiele

Im folgenden Beispiel werden SalesQuota gruppiert und SaleYTD-Beträge in der AdventureWorks2022-Datenbank aggregiert. Die GROUPING-Funktion wird auf die SalesQuota-Spalte angewendet.

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

Das Resultset zeigt zwei NULL-Werte unter SalesQuota an. Der erste NULL-Wert stellt die Gruppe der NULL-Werte aus dieser Spalte in der Tabelle dar. Der zweite NULL-Wert befindet sich in der Summenzeile, die vom ROLLUP-Vorgang hinzugefügt wurde. Die Summenzeile enthält die TotalSalesYTD-Gesamtsummen für alle SalesQuota-Gruppen und ist durch 1 in der Grouping-Spalte gekennzeichnet.

Hier ist das Resultset.

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)

Weitere Informationen

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