この質問は、カーソルに頼らずに未使用の連番範囲を発見することに関する以前の質問 (カーソルを使用しないSQL Server 2005 で連番を操作する ) のフォローアップです。SQL Server 2005 を使用しています。
これらの数値を使用して行う必要があるのは、これらの数値をテーブル内のレコードに割り当てることです。数字の表を、それらの数字を必要とするレコードと実際に関連付ける方法が思いつかないようです。
頭に浮かんだ考えられる解決策の 1 つは、ID を使用し、番号範囲の開始を ID シードとして使用して、一時テーブルにレコードを挿入することでした。このアプローチの唯一の問題は、番号の順序にギャップがあると、管理番号が重複してしまうことです。
これは私のテーブルがどのように見えるかです(過度に単純化されています):
数値表:
Number
-------
102314
102315
102319
102320
102324
102329
データ表:
CustomerId PaymentAmt ControlNumber
---------- ---------- -------------
1001 4502.01 NULL
1002 890.00 NULL
9830 902923.34 NULL
私はそれを作る方法が必要なので、最終的には次のようになります:
CustomerId PaymentAmt ControlNumber
---------- ---------- -------------
1001 4502.01 102314
1002 890.00 102315
9830 902923.34 102319
カーソルを使用しなくてもこれは可能ですか? 私がカーソルを避けている理由は、現在の実装がカーソルを使用しており、非常に遅い (12,000 レコードで 8 分) ため、代替手段を探していたからです。
注:回答を投稿してくれたすべての人に感謝します。それらはすべて素晴らしいものでした。私は、私の後に続く人のために、実装しやすく、維持しやすいと思われるものを選ぶ必要がありました。とても有難い。