Herausforderung SQL-Abfrage

06/10/2007 - 15:02 von Marcus Jacob | Report spam
Hallo Newsgroup,

ich habe eine Tabelle die wie folgt aufgebaut ist, und folgenden Inhalt hat:

BWID; OEID; ABDATUM
1; 1; 01.01.2006
1; 2; 01.10.2006
1; 3; 01.06.2007
2; 2; 01.10.2006
2; 3; 01.05.2007
3; 1; 01.07.2005

Mittels einer Abfrage versuche ich nun folgendes Ergebnis herzustellen:

BWID; OEID; ABDATUM
1; 3; 01.06.2007
2; 3; 01.05.2007
3; 1; 01.07.2005


Meine Absicht ist es pro BWID den aktuellen Datensatz anhand des Ab-Datums
zu erhalten. Für weitere Verknüpfungen benötige ich aber auch die OEID im
Ergebnis.

In der Tabelle sind verschiedene Aufenthaltsorte von Personen vermerkt. Es
erfolgt pro BWID ein neuer Datensatz mit einem Ab-Datum. Der neue Datensatz
erfolgt nur für eine Person, welche Ihren Aufenthaltsort àndert. Ab diesem
Datum hàlt sich die Person an dem Ort mit der OEID auf.
Mein Problem ist nun die Daten so zu "filtern", das ich nur den aktuellen
Aufenthaltsort (OEID) zur jeweiligen Person (BWID) erhalte. Die obigen
Zahlen in den Feldern sind nur zur Verdeutlichung hier angegeben. In der
Orignaltabelle handelt es sich jeweils um GUID's.

Leider komme ich hier nicht weiter. Vielleicht kann mir jemand helfen.

Danke Marcus
 

Lesen sie die antworten

#1 Hans-Werner Stamer
06/10/2007 - 15:51 | Warnen spam
Am Sat, 6 Oct 2007 15:02:39 +0200 schrieb Marcus Jacob:

Hallo Newsgroup,

ich habe eine Tabelle die wie folgt aufgebaut ist, und folgenden Inhalt hat:

BWID; OEID; ABDATUM
1; 1; 01.01.2006
1; 2; 01.10.2006
1; 3; 01.06.2007
2; 2; 01.10.2006
2; 3; 01.05.2007
3; 1; 01.07.2005

Mittels einer Abfrage versuche ich nun folgendes Ergebnis herzustellen:

BWID; OEID; ABDATUM
1; 3; 01.06.2007
2; 3; 01.05.2007
3; 1; 01.07.2005


Meine Absicht ist es pro BWID den aktuellen Datensatz anhand des Ab-Datums
zu erhalten. Für weitere Verknüpfungen benötige ich aber auch die OEID im
Ergebnis.

In der Tabelle sind verschiedene Aufenthaltsorte von Personen vermerkt. Es
erfolgt pro BWID ein neuer Datensatz mit einem Ab-Datum. Der neue Datensatz
erfolgt nur für eine Person, welche Ihren Aufenthaltsort àndert. Ab diesem
Datum hàlt sich die Person an dem Ort mit der OEID auf.



Hallo Marcus,

so sollte es gehen:

SELECT A.BWID,
A.OEID,
A.ABDATUM
FROM Table1 A
WHERE A.OEID = (SELECT MAX(B.OEID) FROM Table1 B WHERE A.BWID = B.BWID)

Falls es mehrere gleiche MAX-Werte BWID gibt muss noch ein Top 1 mit rein,
weil die Unterabfrage nur einen Datensatz enthalten darf.

WHERE A.OEID = (SELECT TOP(1) MAX(B.OEID)...

HTH
Hans-Werber

Ähnliche fragen