Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie wählt man nur Zeilen mit maximaler Sequenz aus, ohne eine Unterabfrage zu verwenden?

Angenommen SQL-Server (>=2005) oder 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 gibt die fortlaufende Nummer einer Zeile innerhalb einer Partition einer Ergebnismenge zurück.

Bearbeiten :funktioniert auch in Oracle, wie Sie hier sehen können:http://sqlfiddle.com/#!4/b7e79/2/0