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

wybierz najnowszy wpis

Pozostałe propozycje są poprawne, ale najbardziej kompaktowe i najszybsze rozwiązanie jest najprawdopodobniej, gdy użyjesz FIRST_VALUE i 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;

Inni wolą

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;

który robi to samo, ale nie jestem zaznajomiony z tą klauzulą. Zobacz zachowaj funkcję agregacji



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EF i TransactionScope zarówno dla SQL Server, jak i Oracle bez eskalacji/rozszerzania do DTC?

  2. Jak przeanalizować xml według xmltable podczas korzystania z przestrzeni nazw w xml(Oracle)

  3. Formatowanie danych na określony kolor

  4. Szyfrowanie Oracle Advanced Secuity z konfiguracją Spring JDBC xml

  5. ORA-12516, TNS:listener nie mógł znaleźć dostępnej obsługi