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

Tìm hợp đồng gần đây nhất cho mỗi tài khoản

Sử dụng ROW_NUMBER :

SELECT account, "date", "value"
FROM
(SELECT 
  account, "date", "value",
  ROW_NUMBER() OVER (PARTITION BY account ORDER BY "date" DESC) rn
 FROM yourTable
) t
WHERE rn=1;

Lưu ý rằng câu trả lời hiện đã bị xóa do @NiVeR đưa ra sẽ đủ nếu chúng tôi chỉ muốn ngày tối đa cho mỗi tài khoản. Nếu chúng ta cũng cần giá trị hoặc nói chung là các cột khác từ mỗi bản ghi, thì chúng ta sẽ phải thực hiện một phép nối bổ sung hoặc sử dụng số hàng như tôi đã làm ở trên.

Xem Demo trên SQL Fiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật cột bảng Oracle với số hàng

  2. Kết quả Cache

  3. Cách nhận thông báo cơ sở dữ liệu đến ứng dụng C ++

  4. Cần cắt khoảng trống trong oracle

  5. Làm cách nào để kết nối với cơ sở dữ liệu Oracle dựa trên web bằng Java?