Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

como selecionar apenas a linha com a sequência máxima sem usar uma subconsulta?


Assumindo 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 retorna o número sequencial de uma linha em uma partição de um conjunto de resultados.

Editar :funciona também no Oracle como você pode ver aqui:http://sqlfiddle.com/#!4/b7e79/2/0