在sql

时间:2015-05-26 22:50:08

标签: tsql

我必须编写一个sql脚本,以识别重复的值,一旦我识别出副本,我必须在后续行中将值增加一个。

这是我的数据:

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

1 个答案:

答案 0 :(得分:0)

我认为这就是你想要的。如果没有,如果您在问题中添加了所需的结果,这将有所帮助。试试这个:

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