重新排序排名行

时间:2014-05-13 20:57:38

标签: tsql stored-procedures sql-server-2008-r2 sql-server-2012

最近我需要实现一种允许对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 bigint
  • field2 int
  • field3 int --->此字段将是排名
  • 的关键轮播列
  • field4 int

数据:

     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

0 个答案:

没有答案