我必须编写一个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
答案 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