曾几何时发现开窗函数在财务对账总特别好用。但是每次可能很久没用,逻辑都要重头来过。特此留一份完整的思考逻辑待日后参考。
以下是数据源:
从上面的数据可以看到通过C列,那么只需要两个条件即可获得已经用对过帐的钱。
第一条件
如果应收款>=截至当日总收款,那么该笔收款 A列 就是需要被锁定的值。
第二条件
一般在最后一条记录的情况是上一笔收入<应收<=截至当日总收款。(上一笔钱全部被锁定了,但是本次付的钱超出了应收款)
应收<=截至当日总收款 即 B<C
上一笔收入<应收 即 C-A < =B
那么该记录 锁定的金额= 应收-上一笔收入=B-(C-A)
C 列函数 sum(AMT) over(partition by CustCode order by DateKey)