sql >> Database teknologi >  >> RDS >> Oracle

At finde den seneste kontrakt for hver konto

Brug 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;

Bemærk, at det nu slettede svar givet af @NiVeR ville være tilstrækkeligt, hvis vi kun ville have den maksimale dato for hver konto. Hvis vi også har brug for værdien, eller generelt andre kolonner fra hver post, så skal vi lave en ekstra join, eller bruge rækkenummer som jeg har gjort ovenfor.

Se Demo på SQL Fiddle .



  1. At vælge den rigtige vej i en kræve-erklæring

  2. Sådan vælger du et element, det nedenfor og det ovenfor i MYSQL

  3. Hvordan bygger man RUNAS /NETONLY funktionalitet ind i et (C#/.NET/WinForms) program?

  4. REGEXP Understreng Oracle