Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Suche nach dem neuesten Vertrag für jedes Konto

Verwenden Sie 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;

Beachten Sie, dass die jetzt gelöschte Antwort von @NiVeR ausreichen würde, wenn wir nur das maximale Datum für jedes Konto wollten. Wenn wir auch den Wert oder allgemein andere Spalten aus jedem Datensatz benötigen, müssten wir einen zusätzlichen Join durchführen oder die Zeilennummer verwenden, wie ich es oben getan habe.

Siehe Demo zu SQL Fiddle .