SELECT SUM(total_amount) total_amount,months,CASE
WHEN pay_type=0 THEN '现金'
WHEN pay_type=1 THEN '支付宝'
WHEN pay_type=2 THEN '微信'
WHEN pay_type=4 THEN '余额' ELSE '其他' END paytype
FROM (SELECT pay_type,order_sn,total_amount,from_unixtime(add_time, '%m') months
FROM order
WHERE from_unixtime(add_time,'%Y')=2017 AND order_status <> 0 AND restaurant_id=131 GROUP BY order_sn) a GROUP BY months,paytype;
部分结果:
total_amout months paytype
14.97 01 其他
10.83 01 微信
49.71 01 支付宝
18.41 01 现金
1.06 02 余额
8.66 02 其他
3.18 02 微信
3.10 02 支付宝
1.41 02 现金
一月份没有余额,也希望显示余额这一行,然后total_amount为0或者空
sql该怎么改,或者能用php实现的话,逻辑怎么写,就是不希望丢失一月份余额为空的数据;大牛大牛帮帮忙;