- 2017年9月11日
- 読むのに5分
-
- j
- c
- M
- m
- M
-
+8
適用対象: SQL Server(サポートされているすべてのバージョン) AzureSQLデータベース AzureSQLマネージドインスタンス Azure Synapse Analytics 並列データウェアハウス
結果セットの出力に番号を付けます。具体的には、結果セットのパーティション内の行の連番を返します。各パーティションの最初の行は1から始まります。
注
ROW_NUMBER
は、クエリの実行時に計算される一時的な値です。テーブル内の数値を永続化するには、IDENTITYプロパティとシーケンスを参照してください。
Transact-SQL構文規則
構文
注
SQL Server 2014以前のTransact-SQL構文を表示するには、以前のバージョンのドキュメントを参照してください。
引数
PARTITION BY value_expression
FROM句によって生成された結果セットを、ROW_NUMBER関数が適用されるパーティションに分割します。 value_expressionは、結果セットが分割される列を指定します。 PARTITION BY
が指定されていない場合、関数はクエリ結果セットのすべての行を単一のグループとして扱います。詳細については、OVER句(Transact-SQL)を参照してください。
order_by_clause
ORDER BY
句は、行に一意の<を割り当てる順序を決定します。指定されたパーティション内のdivid = "4b40b653d3">
。必須です。詳細については、OVER句(Transact-SQL)を参照してください。
戻り値の型
bigint
一般的な注意事項
保証はありません。 ROW_NUMBER()
を使用したクエリによって返される行は、次の条件が当てはまらない限り、実行ごとにまったく同じ順序になります。
-
値パーティション化された列の値は一意です。
-
ORDER BY
列の値は一意です。 -
パーティション列と
ORDER BY
列の値の組み合わせは一意です。
ROW_NUMBER()
は非決定的です。詳細については、決定論的関数と非決定論的関数を参照してください。
例
A。簡単な例
次のクエリは、4つのシステムテーブルをアルファベット順に返します。
結果セットは次のとおりです。
名前 | recovery_model_desc |
---|---|
マスター | シンプル |
モデル | FULL |
msdb | SIMPLE |
tempdb | SIMPLE |
それぞれの前に行番号列を追加するには行に、ROW_NUMBER
関数(この場合はRow#
)を使用して列を追加します。 ORDER BY
句をOVER
句まで移動する必要があります。
これが結果セットです。
行番号 | name | recovery_model_desc |
---|---|---|
1 | マスター | シンプル |
2 | モデル | フル |
3 | msdb | SIMPLE |
4 | tempdb | SIMPLE |
iv id =を追加するrecovery_model_desc
列の “2638b72db3″>
句は、recovery_model_desc
の値が変更されたときに番号付けを再開します。
これが結果セットです。
行番号 | name | recovery_model_desc |
---|---|---|
1 < | モデル | フル |
1 | マスター | シンプル |
2 | msdb | SIMPLE |
3 | tempdb | シンプル |
B。営業担当者の行番号を返す
次の例では、年初来の販売ランキングに基づいて、Adventure WorksCyclesの営業担当者の行番号を計算します。
結果セットは次のとおりです。 。
C。行のサブセットを返す
次の例では、SalesOrderHeader
テーブルのすべての行の行番号をOrderDate
で、50
から60
までの行のみを返します。
D。 PARTITIONでのROW_NUMBER()の使用
次の例では、PARTITION BY
引数を使用して、列TerritoryName
。 OVER
句で指定されたORDER BY
句は、各パーティションの行を列SalesYTD
。 SELECT
ステートメントのORDER BY
句は、TerritoryName
によって設定されたクエリ結果全体を並べ替えます。
結果セットは次のとおりです。
例:Azure SynapseAnalyticsとParallelData Warehouse
E。営業担当者の行番号を返す
次の例では、割り当てられた営業割り当てに基づいて、営業担当者のROW_NUMBER
を返します。
これは部分的な結果セット。
F。 PARTITIONでのROW_NUMBER()の使用
次の例は、PARTITION BY
引数を指定したROW_NUMBER
関数の使用を示しています。これにより、ROW_NUMBER
関数が各パーティションの行に番号を付けます。
これは部分的な結果セットです。
関連項目
RANK(Transact-SQL)
DENSE_RANK(Transact-SQL)
NTILE(Transact-SQL)