Gewusst wie: Gruppieren von Zeilen in Abfrageergebnissen
Aktualisiert: November 2007
Zum Bilden von Teilergebnissen oder zum Anzeigen weiterer Kurzinformationen für Teilbereiche einer Tabelle erstellen Sie Gruppen mithilfe einer Aggregatabfrage. In jeder Gruppe werden die Daten aus allen Zeilen der Tabelle mit demselben Wert zusammengefasst.
Angenommen, Sie möchten den durchschnittlichen Preis für ein Buch in der Tabelle titles anzeigen lassen, wobei die Ergebnisse nach Herausgeber aufgeteilt werden sollen. Dazu gruppieren Sie die Abfrage nach Herausgeber (z. B. pub_id). Hierfür kann folgende Abfrageausgabe formuliert werden:
Beim Gruppieren von Daten können nur Daten aus Zusammenfassungen bzw. gruppierte Daten angezeigt werden, z. B.:
Die Werte der gruppierten Spalten (die in der GROUP BY-Klausel auftreten). Im oben angeführten Beispiel ist pub_id die gruppierte Spalte.
Die Werte, die von Aggregatfunktionen wie SUM( ) und AVG( ) erzeugt werden. Im oben aufgeführten Beispiel wird die zweite Spalte erstellt, indem die Funktion AVG( ) auf die Spalte price angewendet wird.
Werte aus einzelnen Zeilen können nicht angezeigt werden. Wenn Sie z. B. nur nach Herausgeber gruppieren, können nicht gleichzeitig die einzelnen Titel in der Abfrage angezeigt werden. Wenn Sie daher dem Abfrageergebnis Spalten hinzufügen, fügt der Abfrage- und Ansicht-Designer diese automatisch der GROUP BY-Klausel der Anweisung im SQL-Bereich hinzu. Wenn eine Spalte stattdessen aggregiert werden soll, können Sie für diese Spalte eine Aggregatfunktion angeben.
Wenn Sie nach mehreren Spalten gruppieren, werden von jeder Gruppe der Abfrage die Aggregatwerte für alle Gruppenspalten angezeigt.
In der folgenden Abfrage für die Tabelle titles sind die Zeilen beispielsweise sowohl nach Herausgeber (pub_id) als auch nach Buchtyp (type) gruppiert. Die Abfrageergebnisse sind nach Herausgeber geordnet und zeigen für jeden Buchtyp des jeweiligen Herausgebers Kurzinformationen an:
SELECT pub_id, type, SUM(price) Total_price
FROM titles
GROUP BY pub_id, type
Die entsprechende Ausgabe könnte folgendermaßen aussehen:
Hinweis: |
---|
Die angezeigten Dialogfelder und Menübefehle können je nach den aktiven Einstellungen oder der verwendeten Version von den in der Hilfe beschriebenen abweichen. Sie können die Einstellungen ändern, indem Sie im Menü Extras auf Einstellungen importieren und exportieren klicken. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
So gruppieren Sie Zeilen
Starten Sie die Abfrage, indem Sie dem Diagrammbereich die Tabellen hinzufügen, die zusammengefasst werden sollen.
Klicken Sie mit der rechten Maustaste auf den Hintergrund des Diagrammbereichs, und wählen Sie im Kontextmenü die Option Gruppe hinzufügen nach aus. Der Abfrage- und Ansicht-Designer fügt dem Datenblatt im Kriterienbereich die Spalte Gruppieren nach hinzu.
Fügen Sie dem Kriterienbereich die Spalte(n) hinzu, die gruppiert werden soll(en). Wenn die Spalte im Abfrageergebnis aufgeführt werden soll, muss die Spalte Ausgabe für die Ausgabe aktiviert sein.
Der Abfrage- und Ansicht-Designer fügt der Anweisung im SQL-Bereich eine GROUP BY-Klausel hinzu. Die SQL-Anweisung könnte z. B. folgendermaßen aussehen:
SELECT pub_id FROM titles GROUP BY pub_id
Fügen Sie dem Kriterienbereich die Spalte(n) hinzu, die aggregiert werden soll(en). Vergewissern Sie sich, dass die Spalte für die Ausgabe ausgewählt ist.
Wählen Sie in der Datenblattzelle Gruppieren nach der zu aggregierenden Spalte die entsprechende Aggregatfunktion aus.
Der Abfrage- und Ansicht-Designer weist der Spalte, die zusammengefasst wird, automatisch einen Spaltenalias zu. Sie können diesen automatisch generierten durch einen aussagekräftigeren Alias ersetzen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Spaltenaliasen.
Die entsprechende Anweisung im Bereich SQL könnte folgendermaßen aussehen:
SELECT pub_id, SUM(price) AS Totalprice FROM titles GROUP BY pub_id