2016-05-03 23 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