Hallo Heiko,
Mich wundert ein wenig, dass du zwar ein EndDate hast, dieses aber nicht auswertest.
Für der 22.01.2007 wäre laut deinen Daten PersonalId=1 in keiner Gruppe.
Wenn das EndDate keine Rolle spielt, warst du doch schon auf dem richtigen Weg,
es fehlte nur das
First 1 da du ja nur eine Satz zurück haben möchtest:
SQL-Code:
Select First 1
*
From
MyTable
Where
(PersonalId=1) and (StartDate<='22.1.2007')
Order By
StartDate Desc
mit Auswertung des EndDates:
SQL-Code:
select first 1
*
from
MyTable H
where
H.PERSONALID = :PERSONALID
and
(H.STARTDATE <= :DATUM) and (:DATUM <= H.ENDDATE)
ORDER by
H.STARTDATE desc
in beiden Fälle empfiehlt sich ein Index
CREATE DESCENDING INDEX MYTABLE_IDX1 ON MYTABLE (PERSONAL_ID, STARTDATE);
alex