日期:2014-05-18  浏览次数:20499 次

SqlServer中分组更新字段信息问题
假设有个表   info(id   int,info_id   varchar(5)),信息内容如下
id     info_id
1        
1        
1        
1        
4        
4        
8        
8        
8        
8        
我想根据表中字段id的信息,分组更新info_id的信息。使info_id在id基础上递增,例如:第一组有4条记录,id=1,那就更新info_id   从2—5;第二组id=4   两条记录,更新所有id=4对应的info_id,5—6   。
其他组以此类推,得到结果如下:
id     info_id
1         2
1         3
1         4
1         5
4         5
4         6
8         9
8         10
8         11
8         12

请高人指点怎么写

------解决方案--------------------
/*
declare @id int,@info_id int
select @id = 0,@info_id=0
------------------------
@info_id 不需要初始化
@id 随便初始化一个值,保证 @id not in (select id from @T) 就行。
*/

declare @T table(id int,info_id varchar(5))
insert @T
select 1,null union all
select 1,null union all
select 1,null union all
select 1,null union all
select 4,null union all
select 4,null union all
select 8,null union all
select 8,null union all
select 8,null union all
select 8,null

declare @id int,@info_id int
set @id = 1000
update @T set @info_id=case when @id <> id then id+1 else @info_id+1 end,@id=id,info_id=@info_id
select * from @T

/*
id info_id
1 2
1 3
1 4
1 5
4 5
4 6
8 9
8 10
8 11
8 12
*/