获取按天分组的付款现金金额

时间:2011-02-03 10:34:18

标签: php mysql

我有一个名为orders的表,此表包含我们需要的所有信息。

我只列出查询所需的列:

  • purchase_price(始终包含订单支付的总金额)
  • pay_method((int)当1表示已用现金支付全部purchase_price3表示purchase_price仅支付部分现金,其他价值意味着其他支付手段,所以忽略它们。)
  • cash_paid(当pay_method3时,此列包含为订单支付的现金金额,请注意这不是总价,而只是{purchase_price的一部分1}}以现金支付。当pay_method不是3时,此字段的值为0
  • date((日期时间)只是订单下达的日期+时间)

这个想法非常简单。我们需要按天分组的现金支付总额。 但我们发现这是一项非常艰巨的任务。

PS:我正在使用MySQL在PHP中解决这个问题,所以可以使用多个查询和/或使用一些PHP脚本。

4 个答案:

答案 0 :(得分:3)

使用MySQL IF-function

如果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`)

你可以试试这个。这将为您支付总现金...对于支付现金,您可以创建另一个查询并将它们添加到......