Freigeben über


Gruppieren von Zeilen in Abfrageergebnissen (Visual Database Tools)

Gilt für: SQL Server

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:

Abfrageergebnisse: Durchschnittspreis gruppiert nach Verleger

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 Sicht-Designer diese automatisch der GROUP BY-Klausel der Anweisung im SQL-Bereichhinzu. 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:

Abfrageergebnisse: Preis gruppiert nach Verleger und Typ

So gruppieren Sie Zeilen

  1. Starten Sie die Abfrage, indem Sie dem Diagrammbereich die Tabellen hinzufügen, die zusammengefasst werden sollen.

  2. 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 Sicht-Designer fügt dem Datenblatt im Kriterienbereich die Spalte Gruppieren nach hinzu.

  3. 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 Sicht-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  
    
  4. 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.

  5. Wählen Sie in der Datenblattzelle Gruppieren nach der zu aggregierenden Spalte die entsprechende Aggregatfunktion aus.

    Der Abfrage- und Sicht-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 Erstellen von Spaltenaliasen (Visual Database Tools).

    Hinzufügen eines Spaltenalias zum Abfrage-Resultset

    Die entsprechende Anweisung im Bereich SQL könnte folgendermaßen aussehen:

    SELECT   pub_id, SUM(price) AS Totalprice  
    FROM     titles  
    GROUP BY pub_id  
    

Weitere Informationen

Sortieren und Gruppieren von Abfrageergebnissen