我在SQL Server中有一个包含3个字段的表
Id int identity(1,1)
thRead int
level int
现在在这个表中有一些线程,比如1-5,所有都重复5次,如下所示:
1,1,1,1,1 2,2,2,2,2 3,3,3,3,3 4,4,4,4,4 5,5,5,5,5
现在我想更新级别,对于一组记录,它应该从零开始递增,另一组从0开始递增等等。
我想要输出如下表....
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
2 4
3 0
3 1
3 2
3 3
3 4
请任何人可以帮我解决这个问题...更新应该是选择查询所以不需要手动输入线程,它应该自动更新
谢谢和问候 阿巴斯电动
答案 0 :(得分:1)
这是一次性更新吗?如果是这样,这将有效。
with cte as
(
SELECT Id , thRead, level,
ROW_NUMBER() OVER (PARTITION BY thRead ORDER BY Id) -1 AS RN
FROM T
)
UPDATE cte
SET level = RN
如果你想为更难的新行继续这样做。
答案 1 :(得分:0)
你可以试试这个
;WITH Temp as
(
SELECT Id , thRead, ROW_NUMBER() OVER (PARTITION BY thRead ORDER BY Id) -1 'Level'
FROM YourTable
)
Select Id, ThRead, Level from Temp