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.