使用SQL Server 2008,使用MS Visual Studio 2012 C#.NET4.5
上周我问了一个类似的问题,通过以下查询解决了这个问题:
DECLARE @from int = 9, @to int = 3
UPDATE MainPareto
SET pareto = m.new_pareto
FROM (
SELECT pKey, -- this is your primary key for the table
new_pareto = row_number()
over(ORDER BY CASE WHEN pareto = @from THEN @to ELSE pareto END,
CASE WHEN pareto = @from THEN 0 ELSE 1 END)
FROM MainPareto
-- put in any conditions that you want to restrict the scores by.
WHERE PG = @pg AND pareto IS NOT NULL
-- end condtions
) as m
INNER JOIN MainPareto ON MainPareto.pKey = m.pKey
WHERE MainPareto.pareto <> m.new_pareto
正如你所看到的那样,这种做法很有意义,在做出改变时会带来“联盟” 现在,一些功能用户请求删除和恢复。
在我的winform上,用户可以右键单击网格并删除“部分”编号。
如果需要,用户也可以恢复。
但是,我需要一个存储过程,它将使用网格和更新,就像这个方法更新后,从另一个存储过程中删除后,我的Winform将对该部分进行排序,但我确实需要一个可以做什么的过程我目前正在删除。
希望你们明白,如果不是问我,我会尽力澄清并尽力澄清。
答案 0 :(得分:0)
我不完全确定这是否是您要查找的内容,但这是您重新设置主键列的方法(如果您的主键也是identity
)。请注意截断后的插入不包括第1列(主键列)。
select *
into #temp
from MainPareto
truncate table MainPareto
insert into MainPareto (col2, col3, col4) --...
select col2, col3, col4 --...
from #temp