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

изберете най-новия запис

Другите предложения са правилни, но най-компактното и бързо решение най-вероятно е, когато използвате FIRST_VALUE и LAST_VALUE аналитични функции

SELECT DISTINCT
   FIRST_VALUE(LOCATION_ID) OVER (PARTITION BY PERSON_ID ORDER BY THE_DATE 
             ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS LOCATION_ID, 
   PERSON_ID, 
   MAX(THE_DATE) OVER (PARTITION BY PERSON_ID) AS LAST_DATE
FROM YOUR_TABLE;

Други хора предпочитат

SELECT 
   MAX(LOCATION_ID) KEEP (DENSE_RANK FIRST ORDER BY DATE) as LOCATION, 
   PERSON_ID, 
   MAX(DATE) as LAST_DATE
FROM YOUR_TABLE
GROUP BY PERSON_ID;

което прави същото, но не съм толкова запознат с тази клауза. Вижте aggregate_function KEEP



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конвертиране на Oracle Reports (.rdf) в BIRT отчети

  2. Преводач на Hibernate 5 HQL за Oracle Spatial

  3. Как да получите достъп до Oracle DB във VirtualBox от хост (windows)

  4. SQL броене по група

  5. Агрегатна конкатенация на низове в Oracle 10g