Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak uzyskać ostatnie dwa wiersze z określoną wartością według daty w SQL?

EDYTUJ Zaktualizowano, aby nie liczyć zduplikowanej wartości daty dla tego samego varchar2 .

Zastąpiono RANK() z DENSE_RANK() tak, że przypisuje kolejne rangi, a następnie używa distinct aby wyeliminować duplikaty.

Możesz użyć 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

Wejście:

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

Wynik:

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. Grupowanie rekordów godzina po godzinie lub dzień po dniu i wypełnianie luk zerem lub nullem w mysql

  2. Eksportuj wyniki zapytania Oracle do pliku HTML podczas korzystania z SQLcl

  3. Zapytanie o obliczanie odległości Lat Lon w Oracle

  4. Oracle RAC w chmurach innych firm

  5. Klucz podstawowy tożsamości wygenerowanej automatycznie w Oracle SQL