Erstellen einer Access Kreuztabelle

Kreuztabellenabfragen nehmen in der Reihe der Abfragen eine ganz besondere Position ein. Her-kömmliche Abfragen sehen in der Datenblattansicht wie ganz normale Tabellen aus – sie besitzen Feldnamen als Spaltenüberschriften und jeder Datensatz nimmt eine Zeile ein. Kreuztabellenab-fragen hingegen dienen zur Gruppierung und Sortierung von Daten sowie zur Anwendung von Funktionen wie etwa 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 gar nicht so unkompliziert an und erfordert auch ein gewisses Hineindenken in die Materie. Nach der Lektüre des vorliegenden Beitrag werden Sie vermutlich ganz anders denken und Kreuztabellenabfragen je nach Anforderung aus dem ärmel schütteln.

Die folgenden Beispiele verwenden die Tabellen der Südsturm-Datenbank, unserer optimierten Version der mit Access mitgelieferten Nordwind-Datenbank.

Wozu dienen Kreuztabellen

Daten nach bestimmten Kriterien zu gruppieren und anschließend eine beliebige Aggregatfunktion wie etwa eine Summierung durchzuführen ist kein großes Problem. So können Sie beispielsweise in der Südsturm-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 also etwa Umsätze nach bestimmten Artikeln oder Kategorien einerseits und nach Zeiträumen wie Monaten oder Quartalen andererseits ermittelt werden sollen.

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 etwa als Summe oder Mittelwert – im Kreuzungspunkt der Spalte und der Zeile anzuzeigen.

Vorbereiten einer Abfrage

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.

Dazu ziehen Sie zunächst die Tabellen tblArtikel, tblBestellungen und tblBestelldetails in die Entwurfsansicht der Tabelle. Anschließend ziehen Sie einige Felder gemäß Abb. 1 in das Entwurfsraster.

pic001.png

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

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 reduziert um einen eventuell vorhandenen Rabatt. Tragen Sie einfach den oben angegebenen Ausdruck in die Zeile Feld einer leeren Spalte ein.

Kreuztabellen per Assistent erstellen

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 (s. Abb. 2).

pic002.png

Abb. 2: Auswahl des Kreuztabellenabfrage-Assistenten

Unter Access 2007 und jünger finden Sie den Befehl zum Öffnen des Kreuztabellen-Assistenten im Ribbon unter Erstellen|Andere|Abfrage-Entwurf (Access 2007) beziehungsweise Erstellen|Abfragen|Abfrage-Assistent (Access 2010)

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 (s. Abb. 3).

pic003.png

Abb. 3: Auswahl der Datenherkunft

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.

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

pic004.png

Abb. 4: Auswahl der gewünschten Felder

Dazu bewegen Sie die Einträge ArtikelID 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 (s. Abb. 5).

pic005.png

Abb. 5: Auswahl eines Zeitintervalls

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

pic007.png

Abb. 6: Auswahl des zu berechnenden Feldes

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 Abb. 7 aus. Neben der Gesamtsumme der Erträge eines jeden Artikels finden Sie in den weiteren Spalten die Summen für die einzelnen Monate.

pic006.png

Abb. 7: Das Ergebnis einer Kreuztabellenabfrage

Bearbeiten des Entwurfs einer Kreuztabellenabfrage

Leider ist die mit dem Assistenten erstellte Kreuztabellenabfrage nicht ganz perfekt: Die in der Südsturm-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 für Januar für die Jahre 2009, 2010 und 2011 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 (s. Abb. 8).

pic008.png

Abb. 8: Die durch den Assistenten erstellte Abfrage

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:

=2010

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.

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