[SQL]Zapytanie o ostatni rekord

0

Mam problem ze skonstruowaniem zapytania SQL. Ale po kolei.
Mam tabelę ze stawkami pracowników wraz z datami w jakich obowiązywały, wygląda to tak;

idPrac Stawka dataOd dataDo
P0001111 3000 2006-03-01 2007-06-30
P0001111 3500 2007-07-01 2007-08-31
P0001111 4000 2007-09-01
P0002222 1800 2007-10-01
P0003333 1600 2006-01-01

Puste pole dataDo oznacza że stawka jest aktualna, oczywiście istnieje tabela Pracownicy z informacjami o pracownikach /dla uproszczenia niech zawiera tylko pola idPrac i Nazwisko/, w problematycznym zapytaniu tabele będą łączone.

Problem - próbuję skonstruować zapytanie które zwróci dla każdego pracownika tylko jedną, ostatnią, stawkę z podanego przedziału dat, czyli odpowiedź na pytanie "jaka była ostatnia stawka każdego pracownika w okresie od - do".
Dla przykładu - oczekiwany wynik zaptania dla zakresu dat 2007-01-01 do 2007-08-01

idPrac Stawka dataOd dataDo
P0001111 3500 2007-07-01 2007-08-31
P0002222 //puste bo człowiek jeszcze nie pracował
P0003333 1600 2006-01-01 //dataOd jest poniżej zadanego zakresu dat ale w tym okresie była to aktualna stawka
No i skończyły mi się pomysły jak miałoby wyglądać takie zapytanie :(

Baza to niestety Access.
Mam nadzieję że takie rzeczy to nie tylko w Erze ;)

0

Skoro po lewej stronie wszyscy więc LEFT JOIN, skoro ostatnia to MAX, skoro przedział to BETWEEN.
Nie mam czasu się rozpisywać, ale zrobił bym to tak, że pracowników złączył bym z podzapytaniem do stawek zracających ostatnią stawkę (czyli z maksymalną datą, ale taką że jest between zadany przedział). Pokombinuj. Najpierw sprubuj zrobić tą "prawą" część ...

0

Ze złączeniem nie mam problemu, problem jest właśnie z tą "prawą" częścią.
W przykładzie powyżej ostatnia osoba nie mieści się w BETWEEN niemniej też powinna być uwzględniona w wyniku, no i tu właśnie zgoopiałem :/

0

No to trzeba dołożyć OR DATADO IS NULL <- lub wszyscy którzy pracują do teraz

1 użytkowników online, w tym zalogowanych: 0, gości: 1