sql >> Database teknologi >  >> RDS >> Oracle

Sådan får du de seneste to rækker med en bestemt værdi efter dato i SQL

REDIGER Opdateret til ikke at tælle dublet datoværdi for den samme varchar2 .

Erstattet RANK() med DENSE_RANK() sådan at den tildeler på hinanden følgende rækker, og derefter brugt distinct for at eliminere dubletterne.

Du kan bruge 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

Indtastning:

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. Schrödingers MySQL-tabel:eksisterer, men det gør den ikke

  2. Tilslutning til en database ved hjælp af PHP

  3. Udløser fejl ORA-04092 ORA-04088

  4. VÆLG fra to tabeller baseret på samme id og grupperet