ROW_NUMBER(Transact-SQL)

  • 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()を使用したクエリによって返される行は、次の条件が当てはまらない限り、実行ごとにまったく同じ順序になります。

  1. 値パーティション化された列の値は一意です。

  2. ORDER BY列の値は一意です。

  3. パーティション列と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引数を使用して、列TerritoryNameOVER句で指定されたORDER BY句は、各パーティションの行を列SalesYTDSELECTステートメントの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)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です