SELECT * FROM
( SELECT
e.*,
ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC) r
FROM
EMPLOYEE e)
WHERE r = 1;
Výše uvedené vám poskytne záznam s maximálním efektivním datem pro každé odlišné emp_id.
Váš druhý požadavek na vrácení záznamu k danému datu by měl být splněn tímto dotazem:
(„Status ASC“ – postará se o převzetí statusu „Joiner“, pokud je pro stejné datum také „Leaver“.)
SELECT * FROM
( SELECT
e.*,
ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC, status ASC) r
FROM
EMPLOYEE e
WHERE effective_date <= '<your desired date>')
WHERE r=1;