Hallo zusammen,
ich bin neu hier und bei SQL ein kompletter Anfänger. Im Rahmen meiner Masterarbeit muss ich mich mir der Thematik von SQL auseinandersetzten und eine Datenbank bearbeiten.
Die Tabelle hat den folgenden Aufbau:
Krankenhausidentidentifikationsnummer (kh_iknr) | jahr | Standortnummer (kh_standnr)
Mein Problem ist folgendes:
Ich möchte gerne nur die Krankenhäuser ausbekommen, die jeweils in den Jahren 2006,2008,2010,2012,2013 einen Eintrag haben und die Standortnummer 0 haben.
Ich habe schon probiert den Code zu schreiben und dabei kam folgendes raus:
SELECT * FROM quali.kh_uid as x
where kh_standnr = 0 and
exists (select * from quali.kh_uid as a
where x.kh_iknr=a.kh_iknr and jahr = 2006) and
exists (select * from quali.kh_uid as b
where x.kh_iknr=b.kh_iknr and jahr = 2008) and
exists (select * from quali.kh_uid as c
where x.kh_iknr=c.kh_iknr and jahr = 2010) and
exists (select * from quali.kh_uid as d
where x.kh_iknr=d.kh_iknr and jahr = 2012) and
exists (select * from quali.kh_uid as e
where x.kh_iknr=e.kh_iknr and jahr = 2013);
Das Problem hierbei ist leider, dass ich auch Einträge bekomme, die nur zwei aufeinanderfolgende Jahre haben z.B. (2006 und 2008).
Ich möchte aber nur Krankenhäuser haben, wo die kh_iknr in allen Jahren auftaucht.
Kann mir da jemand weiter helfen?
Schon mal vielen Dank im Voraus.
ich bin neu hier und bei SQL ein kompletter Anfänger. Im Rahmen meiner Masterarbeit muss ich mich mir der Thematik von SQL auseinandersetzten und eine Datenbank bearbeiten.
Die Tabelle hat den folgenden Aufbau:
Krankenhausidentidentifikationsnummer (kh_iknr) | jahr | Standortnummer (kh_standnr)
Mein Problem ist folgendes:
Ich möchte gerne nur die Krankenhäuser ausbekommen, die jeweils in den Jahren 2006,2008,2010,2012,2013 einen Eintrag haben und die Standortnummer 0 haben.
Ich habe schon probiert den Code zu schreiben und dabei kam folgendes raus:
SELECT * FROM quali.kh_uid as x
where kh_standnr = 0 and
exists (select * from quali.kh_uid as a
where x.kh_iknr=a.kh_iknr and jahr = 2006) and
exists (select * from quali.kh_uid as b
where x.kh_iknr=b.kh_iknr and jahr = 2008) and
exists (select * from quali.kh_uid as c
where x.kh_iknr=c.kh_iknr and jahr = 2010) and
exists (select * from quali.kh_uid as d
where x.kh_iknr=d.kh_iknr and jahr = 2012) and
exists (select * from quali.kh_uid as e
where x.kh_iknr=e.kh_iknr and jahr = 2013);
Das Problem hierbei ist leider, dass ich auch Einträge bekomme, die nur zwei aufeinanderfolgende Jahre haben z.B. (2006 und 2008).
Ich möchte aber nur Krankenhäuser haben, wo die kh_iknr in allen Jahren auftaucht.
Kann mir da jemand weiter helfen?
Schon mal vielen Dank im Voraus.