sql >> Databasteknik >  >> RDS >> Oracle

Hur man får de senaste två raderna med visst värde efter datum i SQL

REDIGERA Uppdaterad för att inte räkna dubbletter av datumvärde för samma varchar2 .

Ersatte RANK() med DENSE_RANK() så att den tilldelar konsekutiva rankningar och använde sedan distinct för att eliminera dubbletterna.

Du kan använda 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

Inmatning:

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

Resultat:

txt | entry_date

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



  1. Oracle-fråga för att få ett visst datum

  2. Rails Postgres-fråga, väljer endast objekt som visas i alla sökparametrar med associationer

  3. mysql välj för att returnera tomrum för alla utom första raden i upprepad kolumn

  4. mysql dubbletter med LOAD DATA INFILE