SELECT * FROM
( SELECT
e.*,
ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC) r
FROM
EMPLOYEE e)
WHERE r = 1;
Ci-dessus, vous obtiendrez un enregistrement avec une effective__Date maximale pour chaque emp_id distinct.
Votre deuxième exigence de retour d'enregistrement pour une date donnée doit être remplie par cette requête :
("status ASC" - se chargera de prendre le statut "Joiner" s'il y a aussi "Leaver" pour la même date.)
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;