答案 0 :(得分:0)
我不确定您是在寻找Excel解决方案还是SQL,因为如果没有唯一键,很难使用SQL。假设每个交易都有唯一的ID字段,我会尽量给你一些建议。
首先计算帐户的所有正面变化(这将是解决方案的一部分,但我为了清楚起见将其拆分)。
SELECT
t.account,
SUM(t.debit) AS change_positive
FROM
transactions AS t
WHERE
t.debit > 0
GROUP BY
t.account
现在您将按帐户获得已恢复借记的总价值。在这种情况下 35 (10 + 5 +20)
现在你必须对借记(负面改变)进行类似的操作,但仅限于当前操作,例如。对于12/21/2017它是-20,对于12/25/2017它是-55。当您拥有debits_till_date的价值时,您将知道payment_total是否已支付该付款,或者是否已经支付过多的债务。在SQL中作为总查询(包括前一个查询),它看起来像这样:
SELECT
q.account,
q.date,
q.transaction_debit,
q.remainings_from_payments
FROM
(
SELECT
t.account,
t.date,
t.debit AS transaction_debit,
SUM(t2.debit) AS debits_till_date,
i.payments_total,
SUM(t2.debit) + i.payments_total AS remainings_from_payments
FROM
transactions AS t
LEFT JOIN transactions AS t2 ON t.account = t2.account AND t.date >= t2.date AND t2.debit < 0
LEFT JOIN (SELECT t.account, SUM(t.debit) AS payments_total FROM transactions AS t WHERE t.debit > 0 GROUP BY t.account) AS i ON t.account = i.account
GROUP BY
t.account, t.date
) AS q
WHERE
q.transaction_debit < 0
AND q.remainings_from_payments < 0
如果您删除最后一部分“AND q.remainings_from_payments&lt; 0”,您将能够看到每次负面交易后仍有多少付款。