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

Hvordan får man den seneste medarbejderrekord i oracle?

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

Ovenstående vil give dig en rekord med maksimal effektiv__dato for hver enkelt emp_id.

Dit andet krav om at returnere post for en given dato bør opfyldes af denne forespørgsel:

("status ASC" - sørger for at tage "Joiner"-status, hvis der også er "Leaver" til samme dato.)

 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;


  1. Gentag rækker i resultatet baseret på en heltalsværdi i kolonnen

  2. Brug af VBS og registreringsdatabasen til at bestemme, hvilken version og 32 vs. 64 bit oracle-drivere der er installeret

  3. Hjælp med at redigere JSON for at lave et array i stedet for en 'ordbog'

  4. Hvad er andet niveau SQL Injection