Tsql 在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

我必须编写一个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 
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,…哦,你想要一个新的排序顺序。查看我编辑的代码。