GROUPING (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics SQL Analytics-Endpunkt in Microsoft Fabric Warehouse 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> )
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 sehen Sie das Ergebnis.
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)