リファレンスガイド> SQL関数のTDVサポート> 分析関数> ROW_NUMBER
 
ROW_NUMBER
ROW_NUMBERは、1から始まるORDER BY句で指定された行の順序付けられた順序で、適用される各行(パーティション内の各行またはクエリによって返される各行のいずれか)に一意の番号を割り当てます。
構文
ROW_NUMBER () OVER ( [ PARTITION BY expression [, ...] ]
ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
備考
PARTITION BYはオプションです。
ORDER BYが必要です。
window句は許可されていません。
ROW_NUMBERがサブクエリに表示される場合、その動作はOracleROWNUM関数と同じではない可能性があります。
各マネージャーの従業員に雇用日で番号を付けたいとします。次のようなクエリを使用します。
SELECT
ROW_NUMBER() OVER (PARTITION BY manager ORDER BY hire_date)
FROM EMPLOYEES
 
このクエリは、最初にマネージャーごとに従業員をパーティション化し、次に各パーティションの従業員を雇用日ごとに並べ替えてから、ROW_NUMBER関数を適用します。ただし、同じ日に複数の従業員が雇用されている可能性があるため、このクエリを繰り返し実行すると、同じ日の従業員の順序が異なる可能性があります。返された順序に一貫性があることを確認するには、2番目の式をORDER BY句に追加します。
SELECT
ROW_NUMBER() OVER (PARTITION BY manager ORDER BY hire_date, ID)
FROM EMPLOYEES