【问题标题】:calculating accounts balance from debit and credit table从借方和贷方表计算账户余额
【发布时间】:2018-03-04 21:11:23
【问题描述】:

我有一个这样的帐户表

+-----------+--------------+
|     fld_id|         name |
+-----------+--------------+
|         1 |         Bank1|
|         2 |         Bank2|
|         4 |         Bank3|
+-----------+--------------+

这样的收入收入表

+-----------+--------------+---------------+-------------+
| fld_id    | fld_type     | fld_account id| fld_amount  |
+-----------+--------------+---------------+-------------+
|         1 |         Salry|            1  |     400     |
|         2 |         Rent |            2  |     500     |
|         4 |       Others |            1  |    1000     |
+-----------+--------------+---------------+-------------+

这样的付款表

+-----------+--------------+---------------+-------------+
| fld_id    | fld_type     | fld_account id| fld_amount  |
+-----------+--------------+---------------+-------------+
|         1 |         Food |            2  |     200     |
|         2 |    Entertain |            2  |     300     |
|         4 |    Transport |            1  |     400     |
+-----------+--------------+---------------+-------------+

我想要一个包含收入、支出和余额总和的账户的最终余额表,比如这张表 --

+-----------+--------------+---------------+-------------+
| account   | Income       | Expence       | Balance     |
+-----------+--------------+---------------+-------------+
|     Bank1 |         1400 |          400  |    1000     |
|     Bank2 |          500 |          500  |       0     |
|     Bank3 |            0 |            0  |       0     |
+-----------+--------------+---------------+-------------+

到目前为止,我编写了这个查询并获得了收入和支出,但没有找到任何计算余额的方法,我的查询和结果是 --query

SELECT fld_account as account, Income, Expense
from tbl_accounts
LEFT JOIN (SELECT fld_account_id, SUM(fld_amount) as Income FROM tbl_revenue tr GROUP BY tr.fld_account_id) tc on fld_id=tc.fld_account_id
left JOIN (SELECT fld_account_id, SUM(fld_amount) as Expense FROM tbl_payment tp GROUP BY tp.fld_account_id) td on fld_id=td.fld_account_id

结果如下--

+-----------+--------------+---------------+
| account   | Income       |   Expense     | 
+-----------+--------------+---------------+
|     Bank1 |         1400 |         400   |
|     Bank2 |          500 |         500   |
|     Bank3 |         Null |         Null  |
+-----------+--------------+---------------+

如何计算余额表付款和收入表并将其加入我的帐户表?非常感谢任何帮助。

【问题讨论】:

    标签: mysql sql database join sum


    【解决方案1】:

    只需使用coalesce():

    SELECT fld_account as account, COALESCE(Income, 0) as Income,
           COALESCE(Expense, 0) as Expense,
           ( COALESCE(Income, 0) - COALESCE(Expense, 0) ) as balance
    FROM tbl_accounts LEFT JOIN
         (SELECT fld_account_id, SUM(fld_amount) as Income
          FROM tbl_revenue tr
          GROUP BY tr.fld_account_id
         ) tc 
         ON fld_id = tc.fld_account_id LEFT JOIN
         (SELECT fld_account_id, SUM(fld_amount) as Expense
          FROM tbl_payment tp
          GROUP BY tp.fld_account_id
         ) td 
         ON fld_id = td.fld_account_id;
    

    COALESCE() 是返回第一个非NULL 参数的 ANSI 标准函数。

    【讨论】:

    • 请你解释一下coalesec()实际上做了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多