Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để có được hồ sơ nhân viên mới nhất trong oracle?

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

Ở trên sẽ giúp bạn có một bản ghi với hiệu quả tối đa__ Ngày cho mọi emp_id riêng biệt.

Yêu cầu thứ hai của bạn về việc trả lại hồ sơ cho ngày nhất định phải được điền đầy đủ bởi truy vấn này:

("trạng thái ASC" - sẽ đảm nhận trạng thái "Người tham gia" nếu cũng có "Người rời khỏi" trong cùng ngày.)

 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 10g / 11g dành cho Mac

  2. tệp hoặc thao tác LOB FILEOPEN không thành công khi tải tệp XML vào bảng

  3. Làm cách nào để định dạng các truy vấn tiên tri của tôi để các cột không bị quấn?

  4. Tìm kiếm văn bản Oracle trên nhiều bảng và kết hợp

  5. Làm cách nào để thực hiện chèn hàng loạt vào cơ sở dữ liệu Oracle bằng Python?