Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите най-новото досие на служителите в Oracle?

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

По-горе ще получите запис с максимална ефективна__Дата за всеки отделен emp_id.

Вашето второ изискване за връщане на запис за дадена дата трябва да бъде изпълнено от тази заявка:

("статус ASC" - ще се погрижи за приемането на статус "Joiner", ако има и "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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да сравним два обекта на база данни в Oracle?

  2. Oracle 11g репликация - Използване на опресняване при извършване с отдалечена база данни (връзки към база данни)

  3. Използване на Java за свързване към база данни на Oracle

  4. Функция RTRIM() в Oracle

  5. Свързване на редове в CLOB