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

comment sélectionner uniquement une ligne avec une séquence maximale sans utiliser de sous-requête ?

En supposant SQL-Server (>=2005) ou Oracle (10g ?) :

WITH CTE AS
( 
   SELECT
       ROW_NUMBER() OVER (PARTITION BY ID  ORDER BY Seq DESC) AS RN
       , ID, Age
   FROM 
       Persons
)
SELECT ID, Age 
FROM CTE
WHERE RN = 1

ROW_NUMBER renvoie le numéro séquentiel d'une ligne dans une partition d'un ensemble de résultats.

Modifier :fonctionne aussi dans Oracle comme vous pouvez le voir ici :http://sqlfiddle.com/#!4/b7e79/2/0