Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So erhalten Sie die letzten zwei Zeilen mit einem bestimmten Wert nach Datum in SQL

BEARBEITEN Aktualisiert, um doppelte Datumswerte für denselben varchar2 nicht zu zählen .

RANK() ersetzt mit DENSE_RANK() so dass es aufeinanderfolgende Ränge zuweist und dann distinct verwendet um die Duplikate zu beseitigen.

Sie können 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

Eingabe:

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

Ergebnis:

txt | entry_date

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