Oracle
 sql >> Base de données >  >> RDS >> Oracle

Trouver le contrat le plus récent pour chaque compte

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

Notez que la réponse maintenant supprimée donnée par @NiVeR suffirait si nous ne voulions que la date maximale pour chaque compte. Si nous avons également besoin de la valeur, ou en général d'autres colonnes de chaque enregistrement, nous devrons effectuer une jointure supplémentaire ou utiliser le numéro de ligne comme je l'ai fait ci-dessus.

Voir Démo sur SQL Fiddle .