HAVING-Klausel (Microsoft Access SQL)
Gilt für: Access 2013 | Access 2016
Gibt an, welche gruppierten Datensätze in einer SELECT-Anweisung angezeigt werden, wenn diese eine GROUP BY-Klausel enthält. Nachdem die Datensätze über die GROUP BY-Klausel zusammengestellt wurden, zeigt die HAVING-Klausel alle Datensätze an, die über die GROUP BY-Klausel gruppiert wurden und die Bedingungen der HAVING-Klausel erfüllen.
Syntax
SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist [HAVING groupcriteria ]
Eine SELECT-Anweisung mit einer HAVING-Klausel besteht aus folgenden Komponenten:
Bestandteil | 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 finden Sie unter FROM-Klausel. |
selectcriteria | Die 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 dem Argument Gruppenfeldliste bestimmt die Gruppierungsebenen von der höchsten bis zur niedrigsten Ebene der Gruppierung. |
groupcriteria | Ein Ausdruck, der bestimmt, welche gruppierten Datensätze angezeigt werden. |
Hinweise
Die HAVING-Klausel ist optional.
Die HAVING-Klausel entspricht der WHERE-Klausel, die bestimmt, welche Datensätze ausgewählt werden. Nachdem Datensätze über die GROUP BY-Klausel gruppiert wurden, bestimmt die HAVING-Klausel, welche Datensätze angezeigt werden:
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
Eine HAVING-Klausel kann bis zu 40 Ausdrücke enthalten, die über logische Operatoren wie Und und Oder miteinander verknüpft werden .
Beispiel
Im folgenden Beispiel werden die Positionen ausgewählt, die mehreren Mitarbeitern in Washington zugewiesen sind. Dabei wird die EnumFields-Prozedur aufgerufen, die im Beispiel für die SELECT-Anweisung enthalten ist.
Sub HavingX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Select the job titles assigned to more than one
' employee in the Washington region.
Set rst = dbs.OpenRecordset("SELECT Title, " _
& "Count(Title) as Total FROM Employees " _
& "WHERE Region = 'WA' " _
& "GROUP BY Title HAVING Count(Title) > 1;")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print recordset contents.
EnumFields rst, 25
dbs.Close
End Sub
Siehe auch
- Access-Entwicklerforum
- Hilfe mit Access unter support.office.com
- Access-Foren auf UtterAccess
- Entwickler- und VBA-Programmierung (FMS)
- Access-Beiträge zu StackOverflow
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.