0

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

我有一个 php 页面,它逐行显示此事务信息,它看起来很棒。但是,在 mySQL 查询中是否有一种方法可以按天“折叠”所有“退款”的货币交易? 对交易类型进行 GROUP_BY 非常容易,但我只想在 transaction_type 的类型为“refund”并且这些退款发生在同一天的情况下进行分组。谢谢!

我当前的示例表:
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 美元 200 美元 1 月 1 日,押金,100 美元

当前的 SQL 类似于:


从 transaction_history中选择 transaction_date、transaction_type、transaction_amount
WHERE customer_id = $customer_id
ORDER BY transaction_date DESC

4

1 回答 1

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
于 2013-09-18T22:30:01.150 回答