Tsql 在sql中标识重复值并按1递增
我必须编写一个sql脚本,以识别重复的值,一旦我识别了重复的值,我必须在随后的行中增加值1 以下是我的数据:Tsql 在sql中标识重复值并按1递增,tsql,Tsql,我必须编写一个sql脚本,以识别重复的值,一旦我识别了重复的值,我必须在随后的行中增加值1 以下是我的数据: Id ParentId Status SortOrder 15436 8918 1 0 10288 8918 1 1 13162 8918 1 2 18447 8918 1 2 19257 8918 1 3 2
Id ParentId Status SortOrder
15436 8918 1 0
10288 8918 1 1
13162 8918 1 2
18447 8918 1 2
19257 8918 1 3
26911 8918 1 4
25578 8918 1 5
我想这就是你想要的。如果没有,如果你在问题中添加了你想要的结果,这会有所帮助。试试这个:
DECLARE @yourTable TABLE(Id INT,ParentId INT, [Status] INT,SortOrder INT);
INSERT INTO @yourTable
VALUES (15436,8918,1,0),
(10288,8918,1,1),
(13162,8918,1,2),
(18447,8918,1,2),
(19257,8918,1,3),
(26911,8918,1,4),
(25578,8918,1,5);
SELECT ID,
ParentID,
[Status],
SortOrder,
[NewSortOrder] = ROW_NUMBER() OVER (PARTITION BY ParentID ORDER BY sortOrder,ID) - 1
FROM @yourTable
结果:
ID ParentID Status SortOrder NewSortOrder
----------- ----------- ----------- ----------- --------------------
15436 8918 1 0 0
10288 8918 1 1 1
13162 8918 1 2 2
18447 8918 1 2 3
19257 8918 1 3 4
26911 8918 1 4 5
25578 8918 1 5 6
Id ParentId状态排序器15436 8918 1 0 10288 8918 1 13162 8918 1 2 18447 8918 1 2 19257 8918 1 3 26911 8918 1 4 25578 8918 1 5我知道您是stackoverflow新手。建议将有关问题的信息保留在问题区域,而不是评论部分。我编辑了你的答案来告诉你我的意思。谢谢Stephan,但这不是你想要的结果,可能是我不清楚。。我不想看到相同父id下的重复排序顺序,如果您看到上面有两个'2'。我想要一个脚本,如果你看到重复的排序顺序,从这里开始递增1,输出排序顺序应该是0,1,2,3,4,5,6,…哦,你想要一个新的排序顺序。查看我编辑的代码。