MySql 中 case when then else end 的用法

用法

用法一

case 列                       ------------类似于which
when 值 then 值               -------------类似于case
when 值 then 值
else 值                        ------------类似于default
end

用法二

case 
when 判断条件 then 值
when 判断条件 then 值
else 值
end

case when then else end 使用实例

示例一

SELECT            
    case                   -------------如果
    when sex='1' then '男' -------------sex='1',则返回值'男'
    when sex='2' then '女' -------------sex='2',则返回值'女'  
    else 0                 -------------其他的返回'其他’
    end                    -------------结束
from   sys_user            --------整体理解: 在sys_user表中如果sex='1',则返回值'男'如果sex='2',则返回值'女' 否则返回'其他’

我们对筛选的列进行处理

实例二 行转列

SELECT oi.order_code AS '订单号',oi.created_time AS '创建时间',oi.real_total_price AS '订单支付金额',
MAX(CASE ooc.type WHEN 0 THEN IFNULL(ooc.commodity_name,'') ELSE 0 END) AS '普通商品名称',
MAX(CASE ooc.type WHEN 0 THEN IFNULL(ooc.commodity_sale_price,0) ELSE 0 END) AS '普通商品价格',
MAX(CASE ooc.type WHEN 1 THEN IFNULL(ooc.commodity_name,'') ELSE '' END) AS '耗材费名称',
MAX(CASE ooc.type WHEN 1 THEN IFNULL(ooc.commodity_sale_price,0) ELSE 0 END) AS '耗材费金额',
MAX(CASE ooc.type WHEN 2 THEN IFNULL(ooc.commodity_sale_price,0) ELSE 0 END) AS '夜班费金额',
MAX(CASE ooc.type WHEN 3 THEN IFNULL(ooc.commodity_sale_price,0) ELSE 0 END) AS '辛苦费金额'
FROM oasis_order.ordernv_info oi LEFT JOIN oasis_order.order_commodity ooc ON oi.id = ooc.order_id
WHERE oi.source = 2 AND oi.user_order_status = 30 AND oi.created_time > '2019-09-10 00:00:00' AND oi.created_time < '2019-11-30 23:59:59'
GROUP BY oi.id;

行专列参考:https://blog.csdn.net/qq_38616723/article/details/83622239

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值