SQL生成序列号

时间:2016-12-29 21:48:27

标签: sql sql-server loops subquery sequence

我有一个包含2个PK列的表,我需要填充它。第一列“ID”已经填充,我需要使用int生成并填充“SeqNum”列,如下例所示。显然,同一个记录中的SeqNum不能与同一个ID相同,因为它们都是PK(我确定你知道我的意思)。我怎么能做到这一点?

这是一个简单的查询:

Insert into @TempTable
Select A.ID
      ,1 --not sure what to do here
      ,B.Col3
      --and other columns
From Blah A Join Blah2 B on B.ID = A.ID

我尝试了类似的东西但是没有用:

(Select max(ISNULL(SeqNum, 0)) + 1 From @TempTable Where ID = A.ID)

非常欢迎任何帮助。 也许我必须循环?

我需要的示例输出:

PK  PK
ID  SeqNum
1111    1
1111    2
1111    3
2222    1
2222    2
2222    3
3333    1
4444    1
5555    1
5555    2

1 个答案:

答案 0 :(得分:3)

如果我理解这个问题,Row_Number()将非常适合

Select ID
       ,SeqNum = Row_Number() over (Partition By ID Order By (Select NULL))
 From  ...