Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir le dernier enregistrement d'employé dans Oracle ?

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;