2010-08-03 56 views
-1
1. Name---ID--- SEQ 
2. *---------101--1 
3. *---------101--2 
4. *---------101--3 
5. *---------999--1 
6. *---------999--2 

Iqnore的-'sSQL遞增幫助

什麼IM進口的姓名,身份證等領域。我試圖分配的是SEQ。當我到達第二組時,我不確定如何重置計數。 即時通訊使用MS SQL Server 2005的

+0

不知道你在做什麼。也許提供更多信息。 – Kyra 2010-08-03 21:40:48

+0

你需要更多的細節。你正在使用哪個數據庫?你想在選擇命令行號還是你想插入? – jle 2010-08-03 21:41:12

回答

1

在你輸入你可以計算如下

INSERT INTO DestTable 
SELECT Name, ID, 
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS SEQ 
FROM SourceTable 

從您的示例數據序列,目前還不清楚你的ID分區什麼是1,2,3等中如何確定也許你需要將上面的內容更改爲PARTITION BY ID ORDER BY Name或其他內容。目前這將是任意的。

+0

SEQ只是遞增,例如,如果輸入另一行數據並且ID爲101,它將是4,並且如果一行數據與102一起輸入,它將是1 – Tony 2010-08-03 21:55:11

+0

那麼在我的答案中的查詢應該這樣做一次導入,但爲什麼你存儲這個呢?您可以在選擇的查詢中輕鬆使用'ROW_NUMBER()OVER(通過ID身份證進行分區)',並且您不會有試圖保持正在進行的更新的麻煩。 – 2010-08-03 22:00:49

+0

您是否必須解決行被刪除的情況? SEQ值是否改變?如果某行更新了ID更改的位置,該怎麼辦? – bobs 2010-08-03 22:29:42