sql >> Base de Datos >  >> RDS >> Oracle

Encontrar el contrato más reciente para cada cuenta

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;

Tenga en cuenta que la respuesta ahora eliminada dada por @NiVeR sería suficiente si solo quisiéramos la fecha máxima para cada cuenta. Si también necesitamos el valor, o en general otras columnas de cada registro, entonces tendríamos que hacer una combinación adicional o usar el número de fila como lo hice anteriormente.

Ver Demostración en SQL Fiddle .