mysql是一个关系型数据库管理系统,由瑞典mysql ab 公司开发,目前属于 oracle 旗下产品。
那么其中mysql case语句怎么用?
mysql case语句用法:
结构:case when… then …end
1.判断的同时改变其值
eg:
select operatoraccount, case when createtime>'2016-02-14 16:24:42' then 'after' when createtime<'2016-02-14 16:24:42' then 'before' else 'now' end stagefrom log_login order by createtime desc
第二种写法
select callernumber, case islocal when 0 then '外线' when 1 then '内线' end from cdr
2.拆分一行为多列
eg:
select sipaccount, count(1) as number,ischeck from cdr group by sipaccount,ischeck
针对这个统计结果进行拆分(0表示未打分,1代表优秀,2代表合格,3代表不合格)
最终结果如下:
所以最终要用到行拆分成三列,语句如下
select sipaccount, (case ischeck when 1 then number end) youxiu, (case ischeck when 2 then number end) hege, (case ischeck when 3 then number end) buhege from (select sipaccount, count(1) as number,ischeck from cdr group by sipaccount,ischeck) as a
现在结果是这样的,你会发现虽然拆成了三列,但是最终结果还不是自己需要的,接下来就需要根据sipaccount来分组的同时对结果进行处理了。语句如下:
select sipaccount, if(max(youxiu) is null,0, max(youxiu)) youxiu, if(max(hege) is null,0, max(hege)) hege, if(max(buhege) is null,0, max(buhege)) buhegefrom (select sipaccount, (case ischeck when 1 then number end) youxiu, (case ischeck when 2 then number end) hege, (case ischeck when 3 then number end) buhege from (select sipaccount, count(1) as number,ischeck from cdr group by sipaccount,ischeck) as a) as b group by sipaccount
最终得到了这个结果。正是我们需要的格式。
以上就是mysql case语句怎么用?的详细内容。