declare @Clx table(id int identity,duan int,bu int,bu1 int,bu2 int,bu3 int)
declare @ceng int
--id为已知变量@ceng
declare @c45 int
--现在根据@c45 的值更新表变量@Clx(@c45 值为0、1、2、3、4五者之一)
1.当@c45=0,不用处理
2.当@c45=1,对应id=@ceng行的列bu的值+1,列bu1的值+1
3.当@c45=2,对应id=@ceng行的列bu的值+1,列bu2的值+1
4.当@c45=3,对应id=@ceng行的列bu的值+1,列bu3的值+1
5.当@c45=4,对应id=@ceng行的列duan的值+1
---
请教一个不使用if,只使用case的sql代码?

解决方案 »

  1.   

    update @clx set duan=(case @c45=5 then duan+1 end),bu=case @c45 when 1,2,3 then bu+1 end),.....
      

  2.   

    update @Clx set bu=case when @c45>0 and @c45<4 then bu+1 else bu end,  
                    bu1=case @c45 when 1 then bu1+1 else bu1 end,
                    bu2=case @c45 when 2 then bu2+1 else bu2 end,
                    bu3=case @c45 when 3 then bu3+1 else bu3 end,
                    duan=case @c45 when 4 then duan+1 else duan end
    where id=@ceng