komplexe Schleife

Guten Abend,

ich habe ein Problem und weis nicht so recht wie ich an die Sache rangehen soll.

Also eine Tabelle mit den Felder [ID] [Name,Vorname] und [Geburtsdatum]. Da es mehrere IDs zu einem Namen geben kann, muss ich diese im Zusammenhang mit dem Geburtsdatum selektieren können.

Wie würdet Ihr das lösen?

Kannst Du mal ein Beispiel zeigen? Ich verstehe nicht wirklich was Du willst.
(Übrigens: [ID] ist ein ungültiger Bezeichner für eine Spalte)

Die Tabelle sieht vereinfacht so aus.

KundenID,Name,Geburtstag
1,Müller,Andrea,10.11.1900
2,Bertram,Evi,19.03.1980
3,Müller,Andrea,10.11.1900
4,Heinzel,martin,01.03.1986

Ich müsste alle Patienten mit gleichem Namen und Geburtsdatum finden, da die KundenID nicht eindeutig ist.

Als Ergebnis dann:

Müller,Andrea,11.10.1900,1
Müller,Andrea,11.10.1900,3

Wenn’s einfach nur um Name und Geburtstag geht:

select name, 
       geburtstag
from patienten
group by name, geburtstag
having count(*) > 1

Wenn Du die ID auch brauchst, dann sowas:

select *
from (
  select id, 
         name, 
         geburtstag,
         count(*) over (partition by name, geburtstag) as name_count
  from patienten
) t
where name_count > 1

Alternativ kannst Du auch, das folgende nehmen (falls Du Postgres vor der Version 8.4 einsetzt), aber das ist vermutlich etwas langsamer:

select *
from patienten
where (name, geburtstag) in (
      select name, geburtstag
      from patienten
      group by name, geburtstag
      having count(*) > 1)