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

Truy vấn SQL Oracle:Truy xuất các giá trị mới nhất cho mỗi nhóm dựa trên thời gian

Với dữ liệu này ...

SQL> select * from qtys
  2  /

        ID TS                      QTY
---------- ---------------- ----------
         1 2010-01-04 11:00        152
         2 2010-01-04 11:00        210
         1 2010-01-04 10:45        132
         2 2010-01-04 10:45        318
         4 2010-01-04 10:45        122
         1 2010-01-04 10:30          1
         3 2010-01-04 10:30        214
         2 2010-01-04 10:30       5515
         4 2010-01-04 10:30        210

9 rows selected.

SQL>

... truy vấn sau cung cấp những gì bạn muốn ...

SQL> select x.id
  2         , x.ts as "DATE"
  3         , x.qty as "QUANTITY"
  4  from (
  5      select id
  6             , ts
  7             , rank () over (partition by id order by ts desc) as rnk
  8             , qty
  9      from qtys ) x
 10  where x.rnk = 1
 11  /

        ID DATE               QUANTITY
---------- ---------------- ----------
         1 2010-01-04 11:00        152
         2 2010-01-04 11:00        210
         3 2010-01-04 10:30        214
         4 2010-01-04 10:45        122

SQL>

Liên quan đến các yêu cầu bổ sung của bạn, bạn có thể áp dụng các bộ lọc bổ sung cho mệnh đề WHERE bên ngoài. Tương tự, bạn có thể nối các bảng bổ sung vào chế độ xem nội tuyến giống như bất kỳ bảng nào khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia Diễn đàn Hỏi và Đáp dành cho Nhà phát triển

  2. SQL * Plus không thực thi các tập lệnh SQL mà Nhà phát triển SQL thực hiện

  3. Lỗi ORA-12514 sau khi khởi động lại máy chủ

  4. Làm thế nào để sử dụng Array / Table Parameter cho Oracle (ODP.NET 10g) qua ADO.NET/C#?

  5. Truy vấn con Oracle không thấy biến từ khối ngoài 2 cấp trở lên