Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara mendapatkan dua baris terbaru dengan nilai tertentu berdasarkan tanggal dalam SQL

EDIT Diperbarui untuk tidak menghitung nilai tanggal duplikat untuk varchar2 yang sama .

Mengganti RANK() dengan DENSE_RANK() sedemikian rupa sehingga memberikan peringkat berturut-turut, lalu gunakan distinct untuk menghilangkan duplikat.

Anda dapat menggunakan 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

Masukan:

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

Hasil:

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. JDBC Thin Oracle 11g

  2. Mengapa saya tidak bisa menggunakan tipe yang ditentukan pengguna Oracle saya seperti ini?

  3. Memulai Pengembang Oracle SQL di MacOSX

  4. Bagaimana cara mendapatkan konten tekstual dari BLOB di Oracle SQL

  5. Oracle:tahun harus antara -4713 dan +9999, dan tidak boleh 0