Home > Artikel > Ausgabe 5/2012 > Kreuztabellenabfragen

Kreuztabellenabfragen

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Herkömmliche Auswahlabfragen liefern zeilenweise Daten, wobei jede Zeile gegebenenfalls noch die aggregierten Werte für eine Gruppe von Datensätzen enthält – dies erreichen Sie durch die Gruppierung der Abfragedaten. Wenn die Daten nach mehreren Feldern gruppiert werden sollen, also beispielsweise nach Kunde und Artikel, wird dies in einer Auswahlabfrage schnell unübersichtlich. Den nötigen Überblick erhalten Sie, wenn Sie solche Daten in einer Kreuztabelle anzeigen. Dieser Artikel zeigt, wie Sie Kreuztabellen erstellen und was Sie dabei beachten müssen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1205_Kreuztabellenabfragen.mdb.

Vorteile von Kreuztabellenabfragen

Wenn Sie Daten nach mehr als einem Feld gruppieren, also beispielsweise den Umsatz nach Kunden und Artikelkategorie ermitteln möchten, können Sie dies wie in Bild 1 erledigen. Optimal ist diese Ansicht jedoch nicht. Viel besser wäre es, wenn der Kunde als Zeilen- und die Kategorie als Spaltenkopf angezeigt würde und die Kreuzungspunkte von Zeilen und Spalten die Umsätze je Kunde und Kategorie enthielten. Das Ergebnis sieht dann wie in Bild 2 aus und wurde durch den Einsatz einer Kreuztabellenabfrage erreicht. Der Vorteil ist, dass Sie die Werte direkt vergleichen können: Sie sehen, wie sich die Umsätze eines Kunden auf die Kategorien aufteilen, können aber auch die Umsätze verschiedener Kunden für eine bestimmte Kategorie vergleichen.

Gruppierung nach Kunde und Kategorie

Bild 1: Gruppierung nach Kunde und Kategorie

Gruppierung nach Kunde und Kategorie per Kreuztabelle

Bild 2: Gruppierung nach Kunde und Kategorie per Kreuztabelle

Kreuztabellenabfrage erstellen

Bevor wir uns um die Erstellung einer Kreuztabellenabfrage mit dem Assistenten kümmern, schaffen wir die notwendigen Voraussetzungen.

Das bedeutet, dass Sie eine Abfrage erstellen, die alle Felder enthält, die in der Kreuztabelle angezeigt werden sollen. In unserem Fall betrifft das gleich eine ganze Reihe von Tabellen, aus denen folgende Felder zum Abfrageentwurf hinzugefügt werden sollen (siehe Bild 3):

Abfrage als Vorbereitung auf die Kreuztabelle

Bild 3: Abfrage als Vorbereitung auf die Kreuztabelle

  • Tabelle tblKunden: Felder KundeID, Firma als Zeilenüberschrift
  • Tabelle tblBestelldetails: Berechnetes Feld mit dem Ausdruck Umsatz: [tbl­Bestell­details].[Einzelpreis]*[Anzahl]*(1-[Rabatt]) als berechnetes Feld
  • Tabelle tblKategorien: Feld Kategoriename als Spaltenüberschrift

Die übrigen beiden Tabellen tblBestellungen und tblArtikel benötigen Sie ebenfalls, damit Access die Beziehung zwischen den Tabellen mit den in der Abfrage enthaltenen Feldern erkennen kann.

Abfrage-Assistent für Kreuztabellenabfragen

Den Assistenten zur Erstellung von Kreuztabellenabfragen starten Sie je nach Access-Version auf unterschiedliche Weise. In neueren Access-Versionen (ab Access 2007) finden Sie den Eintrag im Ribbon unter Erstellen|Abfrageassistent, in älteren Access-Versionen klicken Sie doppelt auf den Eintrag Erstellt eine Abfrage unter Verwendung des Assistenten im Bereich Abfragen des Datenbankfensters. Der Assistent sieht in allen Versionen etwa gleich aus. Im ersten Schritt wählen Sie zunächst die Tabelle oder Abfrage aus, die als Datenherkunft für die Kreuztabellenabfrage dient (sieBild 4).

Start des Assistenten

Bild 4: Start des Assistenten

Aus den Feldern dieser Datenherkunft wählen Sie nun die Felder für die Zeilenüberschriften, die Spaltenüberschriften und für die gruppierten, berechneten Werte aus. Der Dialog aus Bild 5 ermöglicht die Auswahl eines oder mehrere Felder für die Zeilenüberschriften. Wenn Sie mehrere Felder wählen, werden diese nebeneinander dargestellt. In unserem Fall sollen die beiden Felder KundeID und Firma angezeigt werden. Danach legen Sie im Dialog aus Bild 6 fest, welches Feld die Werte für die Spaltenüberschriften liefern soll. Hier können Sie nur ein Feld auswählen. Der Inhalt dieses Feldes landet im Ergebnis der Kreuztabellenabfrage in den Spaltenköpfen (siehe Bild 7).

Festlegen des Feldes für die Spaltenköpfe

Bild 5: Festlegen des Feldes für die Spaltenköpfe

Auswählen der Quellabfrage

Bild 6: Auswählen der Quellabfrage

Festlegen des Feldes für die Zeilenköpfe

Bild 7: Festlegen des Feldes für die Zeilenköpfe

Schließlich teilen Sie dem Assistenten noch mit, welches Feld nach den für die Spalten- und Zeilenköpfe festgelegten Gruppierungen berechnet werden und welche Berechnung die Abfrage dabei durchführen soll. Sie wählen zwischen Einträgen wie Anzahl, Summe et cetera (sieBild 8). In diesem Schritt geben Sie außerdem noch an, ob die Gesamtsumme je Zeile neben den Zeilenköpfen ausgegeben werden soll – wir entscheiden uns für dieses Beispiel für die Anzeige der Gesamtsumme. Das Ergebnis sieht bereits gut aus: Es zeigt die richtigen Zeilen- und Spaltenköpfe sowie die Gesamtsumme und die gruppierten Summen an. Es überzeugt aber nicht vollständig: Es zeigt nämlich viel mehr Nachkommastellen an, als für die Berechnung von Währungsbeträgen nötig ist (siehe Bild 9).

Auswählen des zu berechnenden Feldes

Bild 8: Auswählen des zu berechnenden Feldes

Datenblattansicht der vom Assistenten erstellten Kreuztabellenabfrage

Bild 9: Datenblattansicht der vom Assistenten erstellten Kreuztabellenabfrage

Finetuning

Kümmern wir uns also zunächst um die Anzahl der Nachkommastellen im Ergebnis. Dazu öffnen Sie die Entwurfsansicht der Abfrage, die etwas anders aussieht als der Entwurf einer einfachen Auswahlabfrage (sieBild 10). Sollten Sie einmal manuell eine Kreuztabellenabfrage erstellen wollen, legen Sie zunächst eine einfache Auswahlabfrage an und ändern den Typ dann in Kreuztabellenabfrage um. Dies erledigen Sie versionsübergreifend mit dem Kontextmenüeintrag Ab­­frage­­typ|Kreuz­ta­bel­len­­abfrage des Abfrage­ent­wurfs. Zusätzlich zu der bereits von gruppierten Abfragen bekannten Zeile Funktion halten Kreuztabellen­abfragen im Entwurf noch eine Zeile namens Kreuztabelle bereit. Mit dieser Zeile legen Sie die Funktion der beteiligten Felder in der Kreuztabelle fest. In unserem Beispiel erhalten die Felder KundeID und Firma den Eintrag Zeilenüberschrift, Kategoriename den Eintrag Spaltenüberschrift und Umsatz den Eintrag Wert. Wie in der Abbildung gut zu erkennen, wird die im Dialog festgelegte Summenspalte als weiteres Feld mit der Kreuztabellenfunktion Zeilenüberschrift definiert:

Entwurf einer Kreuztabellenabfrage

Bild 10: Entwurf einer Kreuztabellenabfrage

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!