sql >> Database >  >> RDS >> Oracle

selecteer de meest recente invoer

De andere voorstellen zijn correct, maar de meest compacte en snelste oplossing is het meest waarschijnlijk wanneer u FIRST_VALUE en LAST_VALUE analytische functies

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;

Andere mensen geven de voorkeur aan

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;

die hetzelfde doet, maar ik ben niet zo bekend met deze clausule. Zie aggregate_function KEEP



  1. SQL Hoe de SUM van kolom over groep in dezelfde tabel te updaten

  2. SQL Server 2008 - Hulp bij het schrijven van eenvoudige INSERT-trigger

  3. CodeIgniter:kan geen verbinding maken met uw databaseserver met behulp van de opgegeven instellingen Foutbericht

  4. ORA-22813:operandwaarde overschrijdt systeemlimieten