sql >> Databasteknik >  >> RDS >> Oracle

Hitta det senaste kontraktet för varje konto

Använd 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;

Observera att det nu raderade svaret från @NiVeR skulle räcka om vi bara ville ha maxdatum för varje konto. Om vi ​​också behöver värdet, eller i allmänhet andra kolumner från varje post, måste vi göra en extra join, eller använda radnummer som jag har gjort ovan.

Se Demo på SQL Fiddle .



  1. Hur RAND() fungerar i MariaDB

  2. Hitta n närmaste grannar för given punkt med hjälp av PostGIS?

  3. PostgreSQL kan inte anropa json_object_keys på en skalär

  4. SubSonic genererar inte MySql främmande nyckeltabeller