MYSQL: Mehrere SELECT COUNT-Abragen mit GROUP BY

sqweezer

Newbie
Registriert
Apr. 2017
Beiträge
3
Hallo Community,

wieder mal eine Frage von mir als SQL-Dummy ;)

Ich stehe vor folgender Herausforderung:

Es soll eine Ausgabe in Form einer Tabelle erfolgen, in der nach PLZ gruppiert die Anzahl der Patienten (gesamt), Anzahl der Kassenpatienten und Anzahl der Privatpatienten ausgegeben werden soll, die innerhalb eines Zeitraums erschinen sind, also:

PLZ Alle K-Patienten P-Patienten
10000 10 7 3
11000 4 4 0
12000 2 0 2

Diese Informationen muss ich mir aus den Tabellen Patient, PAdresse und PEpisode in Kombination holen. In PEpisode steht die Information des Abrechnungsdatums(PEp.ScheinDatum) und die Leistungsart (PEp.PrivatOderKasse mit dem Eintrag P oder K). Die Relation zwischen den Tabellen besteht im Feld IDPAT.

Meine Abfrage für alle Patienten sieht so aus:

SELECT PAd.Plz, Count (*) As 'Alle'
FROM PAdresse PAd, PEpisode PEp, Patient Pat
WHERE PAd.IDPAT=PEp.IDPAT
AND Pat.IDPAT=PAd.IDPAT
AND PEp.ScheinDatum BETWEEN '2017-01-10' AND '2017-01-11'
GROUP BY PAd.Plz, PEp.PrivatOderKasse
ORDER BY PAd.Plz

und liefert auch wunschgemäß:

PLZ Alle
10000 10
11000 4
12000 2

Wie bekomme ich die beiden zusätzlichen Spalten K-Patienten, P-Patienten in die Ausgabe ?

Vielen Dank für Eure Unterstützung ... und noch einen schönen Sonntag :)

Sqweezer
 
in dem du sie angibst?
Du machst ja nur SELECT PAd.Plz, Count (*) As 'Alle', dann bekommst du halt auch nur 2 Spalten...
 
rg88 schrieb:
in dem du sie angibst?
Du machst ja nur SELECT PAd.Plz, Count (*) As 'Alle', dann bekommst du halt auch nur 2 Spalten...

Danke für deine schnelle Antwort. OK hab mich vielleicht etwas unpräzise ausgedrückt.
Dass ich zwei weitere Abfragen erzeugen muss mit PrivatOderKasse = 'K' bzw. 'P' ist mir schon klar ;) die Frage ist jedoch wie muss ich diese Abfrage syntaktisch korrekt in meine SQL-Abfrage einbauen, damit das Ergebnis wie gewünscht aussieht ?
 
Das count() von MySQL zählt keine Nullwerte. Wenn Du also count(IF(PEp.PrivatOderKasse = 'P', 1, NULL)) AS 'Privat' und count(IF(PEp.PrivatOderKasse = 'K', 1, NULL)) AS 'Kasse' in Dein Select einbaust, dann sollte das klappen.
 
Zurück
Oben