我正在尝试从交易表中获取当天的借方总额、贷方总额和可用余额。
到目前为止我已经尝试过......
SELECT
sum(credit),
sum(debit),
sum(credit) - sum(debit) as remaining_balance
FROM transactions
WHERE user_id = 2
group by created_at;
它没有给出正确的结果。
SQL FIDDLE...
http://sqlfiddle.com/#!2/25a27/2
例如,我想要获得银行/ Paypal 对账单等结果...
Date - Debit - Credit - Balance
05/11 - 2.20 - - 7.3
05/10 - - 1.5 - 9.5
05/06 - - 2.5 - 8
05/05 - - 5.5 - 5.5
我正在使用 laravel eloquent orm,所以如果可以通过 ORM 实现,这对我来说是一个很好的建议。谢谢
最佳答案
您可以使用相当简单的 JOIN 来解决它;
SELECT DATE(a.created_at) date, a.debit, a.credit,
SUM(b.credit - b.debit) balance
FROM transactions a
LEFT JOIN transactions b
ON DATE(a.created_at) >= DATE(b.created_at)
GROUP BY DATE(created_at)
ORDER BY DATE(created_at) DESC
这里的问题是 JOIN 条件和 GROUP BY 条件使用在字段上计算的值,而不是使用字段本身。这将限制索引的使用,并使大量数据的查询变得非常慢。
解决方案是添加一个单独的 DATE 字段来保存交易日期。这将允许 JOIN/GROUP BY 直接在字段上工作,并且可以更有效地使用索引。
关于mysql - Eloquent orm或sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23592329/