Hallo Zusammen,
ich möchte eine Kreuztabelle erstellen die immer alle Altersgruppen (12 bis 19) anzeigt, auch wenn es nicht für alle Altersgruppen einen Eintrag beim Geschlecht gibt.
Dazu habe ich mal eine kleine Muster-DB erstellt (Anhang).
tblAlter --> dort sind neben dem Namen das Alter und das Geschlecht eingetragen.
tblJahre --> eine Hilfstabelle die einfach nur Jahre von 1 bis 25 aufzählt.
abf_12_19 --> eine Abfrage die die tblJahre ,,zwischen 12 und 19" eingrenzt.
abfAlter_KT_12_19 --> dort habe ich die ,,abf_12_19" mit einem ,,LEFT JOIN" verknüpft.
Nun werden mir aber nicht alle Altersgruppen (Zeilen) angezeigt, sondern nur die bei denen es einen Eintrag gibt.
Es wird sogar eine Spalte <> angezeigt, warum????
Aktuelle Anzeige:
Alter <> 1 2
0 0 0
12 0 1 0
14 0 2 0
16 0 0 1
19 0 0 1
SOLL-Anzeige:
Alter 1 2
12 1 0
13 0 0
14 2 0
15 0 0
16 0 1
17 0 0
18 0 0
19 0 1
Wie müsste die Kreuztabellenabfrage richtigerweise aussehen?
Könnte mir jemand Tipps geben?
Gruss
mad
TRANSFORM
Nz(COUNT(tblAlter.ID), 0) AS AnzahlvonID
SELECT
abf_12_19.Jahrezahl AS [ALTER]
FROM
abf_12_19
LEFT JOIN tblAlter
ON abf_12_19.Jahrezahl = tblAlter.[ALTER]
GROUP BY
abf_12_19.Jahrezahl
PIVOT
tblAlter.Geschlecht
Entsprechend des Sinns des LEFT JOIN musst Du selbstredend die vollständige Menge (Abfrage und Feld) beim SELECT und Gruppieren verwenden.
Sowie: ALTER ist in SQL ein reserviertes Wort (=> DDL) und besser als Bezeichnung zu vermeiden.
Danke für die Hilfe.
Habe das auf meine Abfrage übertragen.
Danke
mad