2010-08-03 57 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