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