sql >> Database >  >> RDS >> Oracle

Hoe de laatste twee rijen met een bepaalde waarde op datum in SQL te krijgen?

BEWERKEN Bijgewerkt om dubbele datumwaarde niet te tellen voor dezelfde varchar2 .

Vervangen RANK() met DENSE_RANK() zodanig dat het opeenvolgende rangen toekent en vervolgens distinct . gebruikt om de duplicaten te verwijderen.

U kunt 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

Invoer:

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

Resultaat:

txt | entry_date

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



  1. Waarom klaagt Oracle 10g niet over dubbelzinnigheid van kolommen?

  2. mysql join dezelfde tabel andere resultaatset

  3. Cakephp haalt informatie op uit database

  4. Datum- en tijdseenheden in MySQL (volledige lijst)