Freigeben über


GRUPPIERUNG (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsSQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank 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

Das folgende Beispiel gruppiert SalesQuota und aggregiert SaleYTD Beträge in der AdventureWorks2025-Datenbank. 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)

Weitere Informationen

GROUPING_ID (Transact-SQL)
GRUPPIEREN NACH (Transact-SQL)