最近我需要实现一种允许对Table Records进行排名的方法。
最初,我部署了一个Update语句来为排名设定种子:
;with cte as (
select
t.id,
Rank() Over (
Partition by t.field2
Order by t.id
) as [Rank],
t.index,
t.field2,
t.field3 ,
t.field4
from dbo.Table t
where t.field2 = @fldValue
) Update cte
set index = [Rank]
但现在我需要能够让最终用户重新排序。关于如何允许最终用户将等级值92
置于等级值15
并且让所有内容都重新排名的任何建议。
我曾考虑通过游标执行此操作,但我尝试通过Set based operation
执行此操作。
我的第一个转到是Procedural based operation
,但需要更多内联Set based operation
。
表:
数据:
id field2 field3 field4
1 0 1 1
2 0 1 1
3 0 1 1
4 0 1 2
5 0 1 2
6 0 1 1
7 0 1 1
8 0 1 1
9 0 1 1
10 0 1 2
11 0 1 2
12 0 1 1
13 0 1 1
14 0 1 1
15 0 1 2
16 0 1 1
17 0 1 2
18 0 1 2
19 0 1 1