sql >> Database >  >> RDS >> Oracle

Het meest recente contract voor elk account vinden

Gebruik ROW_NUMBER :

SELECT account, "date", "value"
FROM
(SELECT 
  account, "date", "value",
  ROW_NUMBER() OVER (PARTITION BY account ORDER BY "date" DESC) rn
 FROM yourTable
) t
WHERE rn=1;

Merk op dat het nu verwijderde antwoord van @NiVeR voldoende zou zijn als we alleen de maximale datum voor elk account wilden. Als we ook de waarde nodig hebben, of in het algemeen andere kolommen van elk record, dan zouden we een extra join moeten doen, of rijnummer moeten gebruiken zoals ik hierboven heb gedaan.

Zie Demo op SQL Fiddle .



  1. MySQL-query om records bij te werken met verhoogde datum

  2. hoe gaat postgre om met het bitgegevenstype?

  3. MySQL werkend krijgen op OSX 10.7 Lion

  4. Maak verbinding met externe MySQL-server met SSL vanuit PHP