mysql类似于JAVA中switch case用法的语法

一个表,有rece_day1到rece_day10字段,有rece_amt1到rece_amt10字段然后我使用了mysql的casewhen写了这么个东西select@... 一个表,有rece_day1到rece_day10字段,有 rece_amt1到rece_amt10字段
然后我使用了 mysql 的case when 写了这么个东西
select

@sum_rece:=case
#1条件
when rece_day1 is null then @sum_rece+rece_amt1
#2条件
when rece_day2 is not null then @sum_rece+rece_amt2
#.....省略,一直到10
else @sum_rece end as sum_rece
from (SELECT @sum_rece:=0) sr,dcms_act_invoice
其实我想要的结果是 只要when条件满足,就会执行then后面的代码
比如我 1条件和2条件都满足,1中的rec_amt1是10,2中rece_amt2是20的话,最终@sum_rece的值是0+10+20。
但是执行出来的结果是,满足1条件后就跳出case when了,即@sum_rece的值是0+10,不像java中要加个break才会中断case的执行,请问我要怎么写,才能得到我想要的效果?
展开
 我来答
zhongtyler
推荐于2016-11-10 · TA获得超过4408个赞
知道大有可为答主
回答量:4384
采纳率:79%
帮助的人:892万
展开全部
mysql不太熟,不过你的要求就是简单嵌套就行了吧。
select @sum_rece:=s1+s2+s3+s4...+s10 from (
select (case when rece_day1 is null then rece_amt1 else 0) s1,
(case when rece_day2 is null then rece_amt2 else 0) s2,
。。。。
from dcms_act_invoice)

又看了看,不嵌套直接把下面的select 结果加起来也可以,不过看起来就不太好理解了。
select @sum_rece:=
(case when rece_day1 is null then rece_amt1 else 0) +
(case when rece_day2 is null then rece_amt2 else 0) +
。。。。
from dcms_act_invoice
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式