我有一张需要填充2个PK列的表。第一列“ID”已经填充完毕,我需要在下面的例子中用int来生成和填充“SeqNum”列。在相同的记录中显然不能有相同的SeqNum,因为它们都是PK的(我相信你明白我的意思)。我怎样才能做到这一点?SQL生成序列号
它是像这样一个简单的查询:
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
如果我们假设这是SQL服务器或PostgreSQL然后约翰的答案似乎很好地适应。 – xQbert
同意。如果zanq正在查找N个项目的列表,则会有所不同。 – Kevin
根据接受的答案中使用的(非标准)语法添加'sql-server'标记 –