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

Cách lấy hai hàng mới nhất có giá trị nhất định theo ngày trong SQL

CHỈNH SỬA Đã cập nhật để không tính giá trị ngày trùng lặp cho cùng một varchar2 .

Đã thay thế RANK() với DENSE_RANK() sao cho nó chỉ định các cấp bậc liên tiếp, sau đó sử dụng distinct để loại bỏ các bản sao.

Bạn có thể sử dụng DENSE_RANK ()

SELECT DISTINCT TXT, ENTRY_DATE
  FROM (SELECT txt,
               entry_date,
               DENSE_RANK () OVER (PARTITION BY txt ORDER BY entry_date DESC)
                  AS myRank
          FROM tmp_txt) Q1
 WHERE Q1.MYRANK < 3
ORDER BY txt, entry_date DESC

Đầu vào:

txt | entry_date

xyz | 03/11/2014
xyz | 25/11/2014
abc | 19/11/2014
abc | 04/11/2014
xyz | 20/11/2014
abc | 02/11/2014
abc | 28/11/2014
xyz | 25/11/2014
abc | 28/11/2014

Kết quả:

txt | entry_date

abc | 28/11/2014
abc | 19/11/2014
xyz | 25/11/2014
xyz | 20/11/2014



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểu Oracle tham gia trong SQL Server

  2. Chuyển đổi dấu thời gian trong Oracle cho định dạng YYYY-MM-DD HH:MM:SS

  3. truy vấn xóa oracle mất quá nhiều thời gian

  4. Làm thế nào để chọn chuỗi con trong oracle?

  5. Tuyên bố Oracle