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

Trovare il contratto più recente per ciascun account

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

Nota che la risposta ora eliminata fornita da @NiVeR sarebbe sufficiente se volessimo solo la data massima per ciascun account. Se abbiamo bisogno anche del valore, o in generale di altre colonne di ogni record, allora dovremmo fare un join aggiuntivo o usare il numero di riga come ho fatto sopra.

Vedi Demo su SQL Fiddle .