我有一个名为orders
的表,此表包含我们需要的所有信息。
我只列出查询所需的列:
purchase_price
(始终包含订单支付的总金额)pay_method
((int)当1
表示已用现金支付全部purchase_price
时3
表示purchase_price
仅支付部分现金,其他价值意味着其他支付手段,所以忽略它们。)cash_paid
(当pay_method
为3
时,此列包含为订单支付的现金金额,请注意这不是总价,而只是{purchase_price
的一部分1}}以现金支付。当pay_method
不是3
时,此字段的值为0
date
((日期时间)只是订单下达的日期+时间)这个想法非常简单。我们需要按天分组的现金支付总额。 但我们发现这是一项非常艰巨的任务。
PS:我正在使用MySQL在PHP中解决这个问题,所以可以使用多个查询和/或使用一些PHP脚本。
答案 0 :(得分:3)
如果pay_method为1,请执行purchase_price字段。否则请使用cash_paid字段。
SELECT DATE(`date`), SUM(IF(pay_method=1,purchase_price,cash_paid))
FROM yourtable
/*WHERE pay_method IN (1,3) -- if you only want those */
GROUP BY DATE(`date`)
答案 1 :(得分:2)
在一个查询中,您可以尝试这样:
select DATE(date), sum(case when pay_method = 1 then purchase_price else cash_paid end) from orders group by DATE(date)
顺便说一句。不确定在mysql中你是否可以在sum函数中使用“case”。
答案 2 :(得分:2)
您需要使用GROUP BY DAY(date)
答案 3 :(得分:1)
SELECT *, IF(`pay_method`=1,SUM(`cash_paid`),0) AS Cash_Paid FROM orders o
GROUP BY DATE(`date`)
你可以试试这个。这将为您支付总现金...对于支付现金,您可以创建另一个查询并将它们添加到......