我有一個現有的表,其中在正常的軟件操作中,行序列號增加100。我需要執行一個大插入並保持這種增量方法。我以爲我會使用ROW_NUMBER(),但我不知道它是否可以用這種方式增加。使用ROW_NUMBER增加100?
但是,如果您想要獲得更具體的內容,請注意行項順序對於項目是唯一的,並且一些記錄已經開始了順序。例如
Project Category Sequence
Proj1 Cat4 100
Proj1 Cat2 200
Proj2 Cat7 100
Proj2 Cat1 200
Proj3 Cat1 100
所以,如果這些已經存在,我插入新的記錄,我必須說明每個項目已經開始的序列。所以,如果我插入行的Proj1,序列值必須是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;
你可以看到這將產生記錄由一個遞增對於Proj1將是301,302。
您的大腦力量非常感謝。
更新:我會補充一點,如果在第一次插入行之後,更新語句中的這個增量可以更容易地完成,那麼這是完全可以接受的。謝謝。
'((ROWNUMBER + 99)/ 100)* 100'? 你可以'SELECT ID,ROW_NUMBER()OVER(ORDER BY ID)* 100 AS RowNumber' –