[英]Set Sequential Non-Identity Numbers in SQL
我希望有一些關於實現將數字插入行並自動增加其序列的最佳方法的建議。 我正在使用SQL Server 2014我知道有序列對象。 我玩過臨時表,什么不是,但我只是在思考這個問題。 以下是我正在使用的數據:
Table1: OrderList
Column: LineNumber
Table2: WatchList
Column: LineNumber
OrderList表中的LineNumber由另一個系統自動生成,結果數量為10k。 所以,10000,20000,30000。
訂單列表中的數據更新到監視列表表中。 然后添加新行,但LineNumber不是。 所以在WatchList表中它看起來像:
Item / LineNumber / xzy
134 10000 blah blah
1432 20000 blah blah blah
433 NULL blah blah
839 NULL blah blah
我想要做的是運行一個更新,將30000和40000填充到那些空字段中,老實說,我不確定最好的方法。
如果你有一些建議或指導哪條路最好,我會很感激。
您可以通過CTE和Row_Number()進行更新。
@YourTable
只是一個示范表變量。
此外, over (Order by Item)
是一個任意選擇。 你可以over (Order by (Select NULL))
或其他序列。
例
Declare @YourTable Table (OrderNumber varchar(50),[Item] varchar(50),[LineNumber] int,[xzy] varchar(50))
Insert Into @YourTable Values
(2525,134,10000,'blah blah')
,(2525,1432,20000,'blah blah blah')
,(2525,433,NULL,'blah blah')
,(2525,839,NULL,'blah blah')
,(5050,500,70000,'blah blah')
,(5050,600,80000,'blah blah blah')
,(5050,700,NULL,'blah blah')
;with cte as (
Select *
,RN =10000 * Row_Number() over (Partition By OrderNumber Order by Item) + (Select max(LineNumber) from @YourTable Where OrderNumber=A.OrderNumber)
From @YourTable A
Where LineNumber is null
)
Update cte Set LineNumber = RN
Select * from @YourTable
更新的來源
OrderNumber Item LineNumber xzy
2525 134 10000 blah blah
2525 1432 20000 blah blah blah
2525 433 30000 blah blah
2525 839 40000 blah blah
5050 500 70000 blah blah --<< Notice New OrderNumber
5050 600 80000 blah blah blah
5050 700 90000 blah blah
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.