sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo obtener el último registro de empleado en Oracle?

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

Arriba obtendrá un registro con la máxima fecha de vigencia para cada emp_id distinto.

Su segundo requisito de devolver el registro para una fecha determinada debe cumplirse con esta consulta:

("status ASC" - se encargará de tomar el estado de "Incorporado" si también hay "Leaver" para la misma fecha.)

 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;