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 .