加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

使用MySQL计算单个表中借方和贷方的余额

发布时间:2020-12-11 23:43:46 所属栏目:MySql教程 来源:网络整理
导读:使用以下MySQL表包含带有相关金额的借方或贷方“操作”,如何选择具有非零“余额”的所有CLIENT_ID?我已经尝试将表加入到自身中以计算所有借方和贷方总计,但有些东西无法正常工作. CLIENT_ID ACTION_TYPE ACTION_AMOUNT1 debit 10001 credit 1001 credit 500

使用以下MySQL表包含带有相关金额的借方或贷方“操作”,如何选择具有非零“余额”的所有CLIENT_ID?我已经尝试将表加入到自身中以计算所有借方和贷方总计,但有些东西无法正常工作.

CLIENT_ID    ACTION_TYPE    ACTION_AMOUNT
1            debit          1000
1            credit         100
1            credit         500
2            debit          1000
2            credit         1200
3            debit          1000
3            credit         1000
4            debit          1000

我的MySQL查询不起作用:

SELECT 
    client_id,SUM(t_debits) AS debits,SUM(t_credits) AS credits,SUM(t_debits)-SUM(t_credits) AS balance
FROM table_name AS t_debits
LEFT JOIN table_name AS t_credits ON t_credits.client_id=t_debits.client_id
WHERE 
    t_debits.action_type='debit'
    AND t_credits.action_type='credit'
    AND balance!=0
GROUP BY t_debits.client_id,t_credits.client_id;

我期待的结果是:

CLIENT_ID    DEBITS    CREDITS    BALANCE
1            1000      600        400
2            1000      1200       -200
4            1000      0          1000

我不知道还有什么可以尝试的.任何帮助都会很棒. 最佳答案

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(transaction_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,client_id INT NOT NULL,action_type VARCHAR(12) NOT NULL,action_amount INT NOT NULL
);

INSERT INTO my_table(client_id,action_type,action_amount) VALUES
(1,'debit',1000),(1,'credit',100),500),(2,1200),(3,(4,1000);


SELECT client_id,SUM(COALESCE(CASE WHEN action_type = 'debit' THEN action_amount END,0)) total_debits,SUM(COALESCE(CASE WHEN action_type = 'credit' THEN action_amount END,0)) total_credits,0)) 
     - SUM(COALESCE(CASE WHEN action_type = 'credit' THEN action_amount END,0)) balance 
  FROM my_table 
 GROUP  
    BY client_id
HAVING balance <> 0;


+-----------+--------------+---------------+---------+
| client_id | total_debits | total_credits | balance |
+-----------+--------------+---------------+---------+
|         1 |         1000 |           600 |     400 |
|         2 |         1000 |          1200 |    -200 |
|         4 |         1000 |             0 |    1000 |
+-----------+--------------+---------------+---------+

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读