declare @n int
set @n=1
while(@n in(select a from test))
begin
update test set b=case when b<60 and a=@n then b+4
when b>=60 and b<70 and a=@n then b+3
when b>=70 and b<80 and a=@n then b+2
when b>=80 and b<90 and a=@n then b+1
else b end
select b from test where a=@n
set @n=@n+1
end
但你那个b设置的是float类型,所以显示的有误差,自己看看吧,或者改成numeric(19,1)这样的类型