2016-05-03 81 views
1

我有以下命名现金流MySQL表,他们每月的贷款占如月ID,贷款账户号,分期付款,逾期金额在MySQL计算余额,并延续到下一行

FMONTH | ACTNO | INSTALLMENT | OVERDUE 
-------------------------------------- 
1  | 1001 | 500  | 10000 
2  | 1001 | 500  | 
3  | 1001 | 500  | 
1  | 2001 | 1500  | 20000 
2  | 2001 | 1500  | 
3  | 2001 | 1500  | 

我想显示细节这个名单如下

FMONTH | ACTNO | INSTALLMENT | OVERDUE 
-------------------------------------- 
1  | 1001 | 500  | 10000 
2  | 1001 | 500  | 9500 
3  | 1001 | 500  | 9000 
1  | 2001 | 1500  | 20000 
2  | 2001 | 1500  | 18500 
3  | 2001 | 1500  | 17000 

我想很多技术,但遗憾的是我不能在MySQL来完成这个工作

请帮助我如何度的计算在MySQL中按照上述格式在下个月扣除分期付款后的逾期金额。

回答

-1

您可以使用:

aggregate function -calculate overdue-installment 

group by -account number 
+0

尽管此代码可以回答这个问题,提供有关为什么和/或如何回答这个问题将显著改善其长期价值附加的上下文。请[编辑]你的答案,添加一些解释。 – CodeMouse92

0

开始与此有关。在较大的数据集上,使用变量的解决方案会更快,但您可能会使用相同的子查询。

SELECT a.* 
    , SUM(b.payments) balance 
    FROM 
    (SELECT x.fmonth 
      , x.actno 
      , COALESCE(x.overdue,y.installment*-1) payments 
     FROM cashflow x 
     LEFT 
     JOIN cashflow y 
      ON y.actno = x.actno 
      AND y.fmonth = x.fmonth - 1 
    ) a 
    JOIN 
    (SELECT x.fmonth 
      , x.actno 
      , COALESCE(x.overdue,y.installment*-1) payments 
     FROM cashflow x 
     LEFT 
     JOIN cashflow y 
      ON y.actno = x.actno 
      AND y.fmonth = x.fmonth - 1 
    ) b 
    ON b.actno = a.actno 
    AND b.fmonth <= a.fmonth 
GROUP 
    BY a.actno 
    , a.fmonth; 
+0

感谢您的帮助。我的问题已解决。我第一次使用堆栈溢出。我非常感谢你和这个网站的所有者。 –

+0

在这里,赞赏最好通过'投票'和'接受'来证明;-) – Strawberry