sql >> Databasteknik >  >> RDS >> Oracle

välj den senaste posten

De andra förslagen är korrekta men den mest kompakta och snabbaste lösningen är troligen när du använder FIRST_VALUE och LAST_VALUE analytiska funktioner

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;

Andra föredrar

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;

som gör detsamma, men jag är inte så bekant med denna klausul. Se aggregate_function KEEP



  1. Hur testar man metoder som hanterar SQLite-databas i Android?

  2. Kopiera tabell utan att kopiera data

  3. Skriptet kommer inte att logga in

  4. Php flerdimensionell array från mysql-resultat