Oracle
 sql >> Database >  >> RDS >> Oracle

come selezionare solo la riga con la sequenza massima senza utilizzare una sottoquery?

Supponendo SQL-Server (>=2005) o 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 restituisce il numero sequenziale di una riga all'interno di una partizione di un set di risultati.

Modifica :funziona anche in Oracle come puoi vedere qui:http://sqlfiddle.com/#!4/b7e79/2/0