GROUP BY仅包含具有特定条件和日期的行

时间:2013-09-18 22:27:01

标签: mysql sql group-by

我的数据库中有一个基本表,其中包含简单的交易历史记录,例如将钱存入账户,取款以及退款。每个条目都有一个与之关联的日期。

我有一个php页面,它逐行显示这个交易信息,看起来很棒。但是,在mySQL查询中有没有办法让我可以在白天将所有“退款”的资金交易“折叠”成分组?在交易类型上做GROUP_BY很容易,但我只想如果transaction_type属于“退款”类型并且那些退款发生在同一天,则分组依据。谢谢!

我目前的例子表:
1月3日,存款,100美元 1月3日,存款,200美元 1月2日,退出,50美元 1月2日,退款,100美元 1月2日,退款,100美元 1月2日,存款,200美元 1月2日,退款,100美元 1月1日,存款,100美元

我希望如何显示数据 1月3日,存款,100美元 1月3日,存款,200美元 1月2日,退出,50美元 1月2日,退款,300美元<此行已将1月2日的所有退款折叠为1行
1月2日,存款,200美元 1月1日,存款,100美元

当前的SQL类似于:

SELECT transaction_date,transaction_type,transaction_amount
来自transaction_history
customer_id = $ customer_id
ORDER BY transaction_date DESC

1 个答案:

答案 0 :(得分:2)

尝试一下,

SELECT  transaction_date, transaction_type, SUM(transaction_amount)
FROM    TableName
-- WHERE customer_id = $customer_id
GROUP   BY transaction_date, 
           CASE WHEN transaction_type = 'refund' THEN 1 ELSE RAND() END
ORDER   BY transaction_date DESC