我想为下表编写更新脚本。
Id int,
Title nvarchar(100),
ProgramId int,
EventId int,
SortOrder int
我想将SortOrder
列设置为1到N,按Id
列排序。但是,我希望在ProgramId
或EventId
更改时重新启动该号码。也就是说,我希望每行的编号序列1 ... N具有相同的ProgramId
和EventId
值,然后重新启动下一个ProgramId
和{{的编号1}}值。
我知道我可以使用EventId
根据当前排序获取行号,但是当其他两列中的一列发生更改时,我看不出如何重新启动该号码。这甚至可能吗?
答案 0 :(得分:2)
像这样:
;WITH cte As
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY ProgramId, EventId ORDER BY Id) As RN
FROM YourTable
)
UPDATE cte
SET SortOrder = RN