SQL Server 2008 での行番号でのテーブルの結合
SQL Server 2008 で行番号で内部結合を実行するには、ROW_NUMBER()機能が発揮されます。次の例を考えてみましょう。
テーブル:
必要な出力:
Order By 句を使用したソリューション:
行番号に基づいてテーブルを結合するには、ROW_NUMBER( ) ORDER BY を使用した関数句:
select A.val,B.val from( SELECT val,row_number() over (order by val) as row_num FROM A)A join (SELECT val,row_number() over (order by val) as row_num FROM B)B on A.row_num=B.row_num ORDER BY A.val,B.val
出力:
このクエリは目的の出力を生成します:
Order By 句を使用しないソリューション:
order by 句がない場合は、 ROW_NUMBER() 関数を使用した行番号でも、値は任意の順序で並べ替えられます。出力の行は、元のテーブルと同じ順序で出力されます:
select A.val,B.val from( SELECT val,row_number() over (order by (select null)) as row_num FROM A)A join (SELECT val,row_number() over (order by (select null)) as row_num FROM B)B on A.row_num=B.row_num ORDER BY A.val,B.val
出力:
もう一度、このクエリは次のように生成します。目的の出力ですが、行の順序が異なる場合があります:
以上が行番号に基づいて SQL Server 2008 テーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。