Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите най-новите два реда с определена стойност по дата в SQL

РЕДАКТИРАНЕ Актуализирано, за да не се отчитат дублиращите се стойности на дата за същия varchar2 .

Заменен RANK() с DENSE_RANK() така че присвоява последователни рангове, след което се използва distinct за премахване на дубликатите.

Можете да използвате 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 <3ORDER BY txt, entry_date DESC 

Вход:

<пре>txt | въведена_датаxyz | 03/11/2014xyz | 25/11/2014 abc | 19/11/2014 abc | 04/11/2014xyz | 20/11/2014 abc | 02/11/2014abc | 28/11/2014xyz | 25/11/2014 abc | 28/11/2014

Резултат:

<пре>txt | въведена_датаabc | 28/11/2014 abc | 19/11/2014xyz | 25/11/2014xyz | 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. PL/SQL:числова или стойностна грешка:символен низов буфер е твърде малък %ROWTYPE

  2. Изключение за формат на Oracle Date в услугите за отчитане на SQL Server

  3. SQL заявка с CASE и групиране по

  4. Oracle изберете най-новия запис за дата

  5. Oracle - ORA-01489:резултатът от конкатенацията на низове е твърде дълъг