Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter o registro mais recente do funcionário no oracle?

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

Acima, você obterá um registro com o Effective__Date máximo para cada emp_id distinto.

Seu segundo requisito de retorno de registro para determinada data deve ser preenchido por esta consulta:

("status ASC" - cuidará de assumir o status de "Joiner" se também houver "Leaver" para a mesma 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;