日期:2014-05-19  浏览次数:20441 次

小case
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代码?


------解决方案--------------------
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