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

¿Cómo seleccionar solo la fila con secuencia máxima sin usar una subconsulta?

Asumiendo SQL-Server (>=2005) u 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 devuelve el número secuencial de una fila dentro de una partición de un conjunto de resultados.

Editar :también funciona en Oracle, como puede ver aquí:http://sqlfiddle.com/#!4/b7e79/2/0