Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Kreuztabellenabfrage - auch "leere" Zeilen anzeigen

Begonnen von mad, Januar 11, 2024, 09:49:59

⏪ vorheriges - nächstes ⏩

mad

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

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

mad

Danke für die Hilfe.
Habe das auf meine Abfrage übertragen.


Danke
mad