Kreuztabellenabfragen in der Praxis

Autor: André Minhorst, Duisburg

Kreuztabellenabfragen nehmen in der Reihe der Abfragen eine ganz besondere Position ein. Herkömmliche Abfragen sehen in der Datenblattansicht wie ganz normale Tabellen aus – sie besitzen Feldnamen als Spaltenüberschriften und jeder Datensatz nimmt eine Zeile ein. Kreuztabellenabfragen hingegen dienen zur Gruppierung und Sortierung von Daten sowie zur Anwendung von Funktionen wie z. B. der Berechnung von Summen, Durchschnittswerten oder Anzahlen. Nicht, dass normale Abfragen das nicht auch könnten, aber sie schaffen das lediglich in einer Dimension. Kreuztabellenabfragen gruppieren Daten nach zwei unterschiedlichen Kriterien und verwenden diese als Spalten- und Zeilenköpfe für die gewünschten, in einem Raster angeordneten Daten.

Das Ganze hört sich ziemlich kompliziert an und erfordert auch ein gewisses Hineindenken in die Materie. Nach der Lektüre des vorliegenden Beitrags werden Sie vermutlich darüber ganz anders denken und Kreuztabellenabfragen je nach Anforderung aus dem ärmel schütteln. Das ist deshalb besondersgünstig, da Kreuztabellenabfragen als Grundlage für ein weiteres Thema der vorliegenden Ausgabe von Access im Unternehmen dienen: “Diagramme mit Microsoft Graph”.

Hinweis

Die folgenden Beispiele verwenden die Tabellen der Nordwind-Datenbank, die mit Access mitgeliefert wird. Sie können die Tabellen entweder in eine neue Datenbank importieren oder die Beispiele anhand einer Sicherheitskopie der Nordwind-Datenbank durchführen. Selbstverständlich finden Sie alle Beispiele auf der beiliegenden Heft-CD.

Daten nach bestimmten Kriterien zu gruppieren und anschließend eine beliebige Aggregatfunktion wie z. B. eine Summierung durchzuführen ist kein großes Problem. So können Sie beispielsweise in der Nordwind-Datenbank Umsätze nach Rechnungen, Kategorien oder Artikelarten sortieren und gruppieren und die Summen für unterschiedliche Gruppierungen ermitteln.

Schwieriger wird es, wenn die Gruppierung zweidimensional erfolgen soll – wenn Sie etwa Umsätze nach bestimmten Artikeln oder Kategorien einerseits und nach Zeiträumen wie Monaten oder Quartalen andererseits ermittelt möchten.

Hier kommen die so genannten Kreuztabellenabfragen ins Spiel: Sie bieten die Möglichkeit, bestimmte Felder als Spalten- und als Zeilenköpfe festzulegen und die gewünschten Informationen in aggregierter Form – also z. B. als Summe oder Mittelwert – im Kreuzungspunkt der Spalte und der Zeile anzuzeigen.

Eine Kreuztabellenabfrage dient in der Regel zur Darstellung der Summe eines oder mehrerer Werte in unterschiedlichen Detaillierungsstufen. Daher stellen Sie nun zunächst eine Abfrage her, die als Grundlage der Summenbildung dient.

Bild 1: Entwurfsansicht der Abfrage, die als Grundlage für die Kreuztabelle dient

Bild 2: Auswahl des Kreuztabellenabfrage-Assistenten

Bild 3: Auswahl der Datenherkunft

Dazu ziehen Sie zunächst die Tabellen Artikel, Bestellungen und Bestelldetails in die Entwurfsansicht der Tabelle. Anschließend ziehen Sie einige Felder gemäß Bild 1 in das Entwurfsraster. Dabei werden Sie das Feld ganz rechts vergebens in einer der drei Tabellen suchen. Es handelt sich dabei um ein Berechnungsfeld mit dem folgenden Inhalt:

Gesamtpreis: Zcurrency([Bestelldetails]![Einzelpreis]*[Anzahl]*(1-[Rabatt]))

Es berechnet den Gesamtpreis für die angegebene Menge des jeweiligen Artikels und reduziert um einen eventuell vorhandenen Rabatt. Tragen Sie einfach den oben angegebenen Ausdruck in die Zeile Feld einer leeren Spalte ein.

Am einfachsten können Sie eine Kreuztabelle mit dem entsprechenden Assistenten von Access erstellen. Dazu wechseln Sie im Datenbankfenster zunächst in das Register Abfragen.

Klicken Sie anschließend auf die Schaltfläche Neu. Daraufhin erscheint der Dialog Neue Abfrage, in dem Sie den Eintrag Kreuztabellenabfrage-Assistent auswählen (siehe Bild 2).

Daraufhin öffnet sich das erste Fenster des Assistenten. Hier wechseln Sie unter Anzeigen auf die Option Abfragen und wählen als Datenherkunft die soeben erstellte Abfrage aus (siehe Bild 3).

Im unteren Bereich des Fensters können Sie bereits die Struktur der Kreuztabelle erkennen. Sie müssen sie jetzt nur noch mit Leben füllen.

Bild 4: Auswahl der gewünschten Felder

Bild 5: Auswahl eines Zeitintervalls

Und damit beginnen Sie direkt im nächsten Schritt (siehe Bild 4): Hier wählen Sie bis zu drei überschriften für die im linken Bereich der Kreuztabelle befindlichen Felder aus.

Dazu bewegen Sie die Einträge Artikel-Nr und Artikelname in die rechte Liste, indem Sie entweder doppelt auf die gewünschten Einträge klicken oder die Einträge nacheinander markieren und die Schaltfläche mit dem Größer-Zeichen (>) anklicken.

Nun geht es mit den Spaltenköpfen der übrigen Spalten weiter. Den zur Eingabe verwendeten Schritt aktivieren Sie durch einen Klick auf die Schaltfläche Weiter.

Da Kreuztabellen eigentlich immer einen Wert für bestimmte Zeiträume oder Daten anzeigen oder aufsummieren, fällt die Auswahl des Feldes für die Spaltenköpfe nicht schwer: Es heißt Bestelldaten.

Nach der Auswahl dieses Feldes haben Sie die Möglichkeit, die Größe der gewünschten Intervalle festzulegen, für die Sie die Daten berechnen möchten. Der Assistent stellt fünf unterschiedliche Möglichkeiten zur Verfügung (siehe Bild 5).

Und nun folgt die Auswahl des in der Kreuztabelle darzustellenden Feldes sowie der gewünschten Berechnungsart (siehe Bild 6).

Im vorliegenden Beispiel wählen Sie den Eintrag Gesamtpreis und als Funktion Summe. Wenn Sie außer der Berechnung der Summe aller Einnahmen durch die jeweiligen Artikel innerhalb eines Monats auch die Einnahmen über den gesamten Zeitraum ausgeben möchten, aktivieren Sie das Kontrollkästchen neben Gesamtsumme jeder Zeile berechnen.

Fertig! Nun müssen Sie nur noch einen Namen für die Abfrage festlegen und die Schaltfläche Fertigstellen betätigen.

Die Datenblattansicht der Kreuztabelle sieht wie in Bild 7 aus. Neben der Gesamtsumme der Erträge eines jeden Artikels finden Sie in den weiteren Spalten die Summen für die einzelnen Monate.

Bild 6: Auswahl des zu berechnenden Feldes

Bild 7: Das Ergebnis einer Kreuztabellenabfrage

Bild 8: Die durch den Assistenten erstellte Abfrage

Leider ist die mit dem Assistenten erstellte Kreuztabellenabfrage nicht ganz perfekt: Die in der Nordwind-Datenbank enthaltenen Bestelldaten erstrecken sich über drei aufeinander folgende Jahre, in der Datenblattansicht der Kreuztabellenabfrage finden sich aber nur zwölf Monate. Da die Abfrage nicht nach Jahren differenziert, summiert sie beispielsweise im Feld Januar alle Erträge jeweils für Januar der Jahre 1994, 1995 und 1996 auf.

Daher ist eine kleine Nachbearbeitung der Kreuztabellenabfrage dringend erforderlich – außerdem sollten Sie ohnehin einen Blick auf den Entwurf werfen, um ihn zu verstehen und die nächste Kreuztabellenabfrage ohne den Assistenten herzustellen.

Unterschiede zwischen Kreuztabellen und herkömmlichen Abfragen

Im Vergleich zu dem Entwurf einer herkömmlichen Abfrage findet sich auf den ersten Blick zunächst einmal kein großer Unterschied. Erst auf den zweiten Blick offenbart sich die Zeile mit der Bezeichnung Kreuztabelle, in der die Funktionen der einzelnen Felder der Abfrage festgelegt werden können (siehe Bild 8).

Damit die Kreuztabelle nur die Daten für ein bestimmtes Jahr auflistet, müssen Sie lediglich ein Bedingungsfeld hinzufügen, welches die Datensätze nach dem Jahr filtert. Dazu legen Sie in der Abfrage ein neues Feld an. Tragen Sie in die Zeile Feld den folgenden Ausdruck ein:

Bestelljahr: Jahr([Bestelldatum])

ändern Sie den Eintrag in der Zeile Kreuztabelle auf (nicht angezeigt) ab. Der Eintrag selbst wird anschließend nicht angezeigt. Schließlich geben Sie in der Zeile Kriterien den folgenden Ausdruck an:

=1996

Wenn Sie nun in die Datenblattansicht wechseln, stellen Sie schnell fest, dass nur noch die Bestellungen des gewünschten Jahres in die Summen einbezogen werden.

Feldarten einerKreuztabellenabfrage

Kreuztabellenabfragen können drei unterschiedliche Feldarten haben: Zeilenüberschrift, Spaltenüberschrift und Wert.

Zeilenüberschriften sind die Werte, die sich im linken Teil der Tabelle befinden – z. B. Artikel-Nr und Artikelname.

Dabei bilden nicht die Felder selbst, sondern deren Inhalte wie z. B. bestimmte Artikel die Zeilenköpfe.

Als Spaltenüberschriften dienen ja – wie bereits erwähnt – zumeist bestimmte Zeiträume oder Daten. Das gewünschte Format müssen Sie selbst festlegen, z. B. mit folgendem Ausdruck:

Ausdr1: Format([Bestelldatum];"mmm")

Natürlich können Sie statt Ausdr1 auch einen aussagekräftigeren Namen für das Feld wählen – in der Datenblattansicht erscheint er allerdings nicht.

Das entscheidende Feld hat in der Zeile Kreuztabelle den Eintrag Wert: Es handelt sich dabei um das Feld, das die Daten der Kreuzungspunkte der Kreuztabelle enthält.

Berechnungsfunktionen inKreuztabellen

Kreuztabellen bieten die gleichen Berechnungsfunktionen wie übliche Abfragen. Eine Auflistung der Funktionen finden Sie in Tab. 1.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar