Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere l'ultimo record dei dipendenti in Oracle?

SELECT * FROM 
( SELECT  
    e.*,
    ROW_NUMBER() OVER (partition by emp_id order by effective_date DESC) r
FROM  
    EMPLOYEE  e)
WHERE r = 1;

Sopra ti otterrà un record con la massima effettiva__Date per ogni distinto emp_id.

Il tuo secondo requisito di restituzione del record per una data specifica dovrebbe essere soddisfatto da questa query:

("status ASC" - si occuperà di assumere lo stato di "Joiner" se c'è anche "Leaver" per la stessa data.)

 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;