这是SQL小提琴
http://sqlfiddle.com/#!9/25542/2/0
我只想获取我的数据
Sale_On | Count Refunded | Count Sale | Count Cashback
-------------------------------------------------------
2015-09-07 | 1 | 5 | 1
我读到了MySQL中的“ case-when”,但在这种情况下,我必须手动编写每个order_status。
我怎样才能做到这一点?还有其他解决方案,而不是将行转换为列?
最佳答案
如果您愿意对状态进行硬编码,则可以对其进行汇总:
SELECT DATE(o.sale_on),
SUM(od.order_status=1) AS Sales,
SUM(od.order_status=2) AS Refunds,
SUM(od.order_status=3) AS Cashbacks
FROM orders o RIGHT JOIN order_detail od USING (order_id)
GROUP BY DATE(o.sale_on)
在sqlfiddle上查看。
否则,您实际上需要使用对
master_order_status
表的查询来动态生成相似的SQL,以生成选择列表中的各个列。关于mysql - 如何根据日期列将行转换为列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32437652/