sql >> Databáze >  >> RDS >> Oracle

Jak získat nejnovější záznamy o zaměstnancích v oracle?

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

Výše uvedené vám poskytne záznam s maximálním efektivním datem pro každé odlišné emp_id.

Váš druhý požadavek na vrácení záznamu k danému datu by měl být splněn tímto dotazem:

(„Status ASC“ – postará se o převzetí statusu „Joiner“, pokud je pro stejné datum také „Leaver“.)

 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. Odkazování na tabulky vnějších dotazů v poddotazu

  2. Počítání neprázdných hodnot v každém sloupci tabulky

  3. PHP:Třídění výsledků MySQL do vícerozměrného pole

  4. JDBC:cizí klíč na PK vytvořený ve stejné transakci