2016-05-03 5 views
1

を運ぶ、彼らは毎月のローンは私が表示したい月ID、ローン口座番号、割賦などの詳細、延滞金額私はキャッシュフローという名前のMySQLのテーブルを以下している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の

にこの仕事を完了することができません。このリストはcalculatする方法を私を助けてくださいMySQLの上記の形式で、来月に割賦を控除した後の期限切れの金額です。

答えて

-1

あなたは使用することができます。

aggregate function -calculate overdue-installment 

group by -account number 
+0

このコードでは質問に答えることができますが、理由や質問にどのように回答するかについての追加のコンテキストを提供すると、長期的な価値が大幅に向上します。あなたの答えを[編集]して、説明を加えてください。 – CodeMouse92

0

これでスタート。大規模なデータセットでは、varsを使用するソリューションは高速になりますが、おそらく同じサブクエリを使用します。

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

関連する問題