GROUP BY-Klausel (Microsoft Access SQL)

Gilt für: Access 2013 | Access 2016

Kombiniert Datensätze mit identischen Werten in der angegebenen Feldliste zu einem einzigen Datensatz. Für jeden Datensatz wird ein zusammenfassender Wert erstellt, wenn Sie eine SQL-Aggregatfunktion wie z. B. Sum oder Count zur SELECT-Anweisung hinzufügen.

Syntax

SELECT fieldlist FROM table WHERE criteria [GROUP BY groupfieldlist ]

Eine SELECT-Anweisung mit einer GROUP BY-Klausel besteht aus folgenden Teilen:

Teil Beschreibung
fieldlist Der Name der abzurufenden Felder zusammen mit eventuellen Feldnamenaliasen, SQL-Aggregatfunktionen, Auswahlprädikaten (ALL, DISTINCT, DISTINCTROW oder TOP) oder anderen Optionen für die SELECT-Anweisung.
table Der Name der Tabelle, aus der die Datensätze abgerufen werden. Weitere Informationen erhalten Sie in der FROM-Klausel.
criteria Auswahlkriterien. Wenn die Anweisung eine WHERE-Klausel einschließt, gruppiert das Microsoft Access-Datenbankmodul Werte, nachdem die WHERE-Bedingungen auf die Datensätze angewendet wurden.
groupfieldlist Die Namen von bis zu 10 Feldern, die zum Gruppieren von Datensätzen verwendet werden. Die Reihenfolge der Feldnamen in der Gruppenfeldliste bestimmt die Gruppierungsebenen von der höchsten bis zur niedrigsten Ebene.

HinwBemerkungeneise

Die GROUP BY-Klausel ist optional.

Zusammenfassende Werte werden ausgelassen, wenn keine SQL-Aggregatfunktion in der SELECT-Anweisung vorhanden ist.

Null-Werte in GROUP BY-Feldern werden gruppiert und nicht ausgelassen. Null-Werte werden jedoch nicht in jeder SQL-Aggregatfunktion ausgewertet.

Verwenden Sie die WHERE-Klausel, um Zeilen auszuschließen, die nicht gruppiert werden sollen, und verwenden Sie die HAVING-Klausel , um Datensätze nach ihrer Gruppierung zu filtern.

Ein Feld in der GROUP BY-Feldliste kann auf ein beliebiges Feld in einer beliebigen Tabelle in der FROM-Klausel verweisen, es sei denn, es enthält Memo- oder OLE-Objektdaten. Dies gilt auch dann, wenn das Feld nicht in der SELECT-Anweisung enthalten ist, sofern die SELECT-Anweisung mindestens eine SQL-Aggregatfunktion enthält. Das Microsoft® Jet-Datenbankmodul kann keine Gruppierung in Memo- oder OLE-Objektfeldern gruppieren.

Alle Felder im SELECT-Feld müssen entweder in der GROUP BY-Klausel oder als Argumente in einer SQL-Aggregatfunktion eingeschlossen sein.

Beispiel

In diesem Beispiel wird eine Liste von eindeutigen Positionen und die Anzahl der Mitarbeiter mit der Position erstellt. Dabei wird die EnumFields-Prozedur aufgerufen, die im Beispiel für die SELECT-Anweisung enthalten ist.

Sub GroupByX1() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' For each title, count the number of employees  
    ' with that title.  
    Set rst = dbs.OpenRecordset("SELECT Title, " _ 
        & "Count([Title]) AS Tally " _ 
        & "FROM Employees GROUP BY Title;") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print the contents of the  
    ' Recordset. Pass the Recordset object and desired 
    ' field width. 
    EnumFields rst, 25 
 
    dbs.Close 
 
End Sub 

Für jede eindeutige Position berechnet dieses Beispiel die Anzahl der Mitarbeiter in Washington, die diese Position haben.

Sub GroupByX2() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
     
    ' For each title, count the number of employees  
    ' with that title. Only include employees in the  
    ' Washington region. 
    Set rst = dbs.OpenRecordset("SELECT Title, " _ 
        & "Count(Title) AS Tally " _ 
        & "FROM Employees WHERE Region = 'WA' " _ 
        & "GROUP BY Title;") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
 
    ' Call EnumFields to print the contents of the  
    ' Recordset. Pass the Recordset object and desired 
    ' field width. 
    EnumFields rst, 25 
 
    dbs.Close 
 
End Sub 

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.