在sql查询中的fifo

问题描述 投票:0回答:1

是否有可能找到那些在未来日期不会与总和信用额挂钩的负数。

去AZ小说网POI固然.com/平常我害怕.PNG

sql excel
1个回答
0
投票

我不确定您是否在寻找Excel解决方案或SQL,因为如果没有唯一键,很难使用SQL。假设每个事务都有唯一的ID字段,我会尝试给你一些建议。

首先计算帐户的所有正面变化(这将是解决方案的一部分,但我为了清楚起见将其拆分)。

sample

现在,您将按帐户获得已恢复借记的总价值。在这种情况下35(10 + 5 +20)

现在你必须对借方(负面改变)进行类似的操作,但仅限于当前操作,例如。对于12/21/2017它是-20,对于12/25/2017它是-55。当您拥有debits_till_date的价值时,您将知道payment_total是否已支付该付款,或者是否已经支付过多的债务。在SQL中作为总查询(包括前一个),它看起来像这样:

SELECT 
    t.account, 
    SUM(t.debit) AS change_positive 
FROM 
    transactions AS t 
WHERE 
    t.debit > 0 
GROUP BY 
    t.account

如果您删除最后一部分“AND q.remainings_from_payments <0”,您将能够看到每次负面交易后仍有多少付款。


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

© www.soinside.com 2019 - 2024. All rights reserved.