这是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/

10-13 04:48