SELECT * FROM
( SELECT
e.*,
ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC) r
FROM
EMPLOYEE e)
WHERE r = 1;
Ovan får du en post med maximalt effektiv__datum för varje distinkt emp_id.
Ditt andra krav på att returnera post för ett visst datum bör uppfyllas av denna fråga:
("status ASC" - tar hand om att ta "Joiner"-status om det också finns "Leaver" för samma datum.)
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;