通常のソフトウェア操作で行シーケンス番号が 100 ずつ増加する既存のテーブルがあります。大規模な挿入を実行し、この増分方法を維持する必要があります。ROW_NUMBER() を使用すると思っていましたが、この方法でインクリメントできるかどうかはわかりません。
その単純なトピックについては助けていただければ幸いですが、より具体的に知りたい場合は、ライン シーケンスがプロジェクトに固有のものであり、いくつかのレコードが既にシーケンスを開始していることにも注意してください。例えば
Project Category Sequence
Proj1 Cat4 100
Proj1 Cat2 200
Proj2 Cat7 100
Proj2 Cat1 200
Proj3 Cat1 100
したがって、これらが既に存在し、新しいレコードを挿入する場合は、各プロジェクトで既に開始されているシーケンスを考慮する必要があります。したがって、Proj1 に行を挿入する場合、Sequence 値は 300、400、... でなければなりません。
これまでの私のコードブロックは次のとおりです。
WITH CTE (PROJECTNUM, COSTCATID, LINE) AS
( SELECT PROJECTNUM, PACOSTCATID, ROW_NUMBER() OVER(PARTITION BY PROJECTNUM ORDER BY PACOSTCATID)
+ (SELECT MAX(LNITMSEQ) FROM PROJECTTABLE WHERE PAPROJNUMBER = A.PROJECTNUM)
FROM PROJECTSHORTLIST A, CATEGORYTABLE
WHERE <stuff you don't care about>
)
INSERT INTO PROJECTTABLE
(PAPROJNUMBER, PACOSTCATID, LNITMSEQ)
SELECT PROJECTNUM, COSTCATID, LINE
FROM CTE;
これにより、1 ずつ増加するレコードが生成され、Proj1 の場合は 301、302 になることがわかります。
あなたの脳力は大歓迎です。
更新: この 100 ずつのインクリメントが、行が最初に挿入された後の update ステートメントでより簡単に実行できる場合、それは完全に受け入れられることを追加します。ありがとうございました。