SQL 生成序列号
SQL Generate Sequence Numbers
我有一个 table 需要填充 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
如果我理解这个问题,Row_Number() 会很适合这里
Select ID
,SeqNum = Row_Number() over (Partition By ID Order By (Select NULL))
From ...
我有一个 table 需要填充 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
如果我理解这个问题,Row_Number() 会很适合这里
Select ID
,SeqNum = Row_Number() over (Partition By ID Order By (Select NULL))
From ...