mysql - 如何计算两个表中帐户的金额总和取决于第一个字符部分
问题描述
我有两张表 tblaccounts + tblamounts
在tblaccounts我有 AccID、AccCode、AccType(主或子)字段
在tblamounts我有 AccID、TheAmount 字段
我需要计算每个帐户的总金额,但角色就像您在下一个数据中看到的那样:
+---------+--------+---------+
| AccCode | Amount | AccType |
+---------+--------+---------+
| 1 | 2400 | Main |
+---------+--------+---------+
| 11 | 1600 | Main |
+---------+--------+---------+
| 111 | 100 | Sub |
+---------+--------+---------+
| 112 | 1000 | Sub |
+---------+--------+---------+
| 113 | 500 | Sub |
+---------+--------+---------+
| 12 | 800 | Main |
+---------+--------+---------+
| 121 | 500 | Sub |
+---------+--------+---------+
| 122 | 300 | Sub |
+---------+--------+---------+
(Main)12 的金额 = Sub121(500)+Sub122(300) = 800
(Main)11 的金额 = Sub111(100)+Sub112(1000)+Sub113(500) = 1600
(Main)1 的金额 = Main11(1600)+Main12(800) = 2400
我试图根据第一个数字对每个帐户求和,所以如果我想获得 AccCode(1) 的总和,我必须找到以 1 开头的帐户并将其所有金额相加,但是如何检查包含超过1个字符,比如12,我要给金额121 + 122
更新:我使用了下一个代码:
SELECT AccCode,
(
SELECT SUM(TheAmount) xResult FROM tblamounts
INNER JOIN tblaccounts ON tblaccounts.AccID = tblamounts.AccID
WHERE AccCode LIKE xacc.AccCode%
) FROM tblaccounts xacc
解决方案
如果我理解正确,你想要:
select a.*,
(select sum(am.amounts)
from amounts am
where am.accId like concat(a.accId, '%')
)
from accounts a;
也就是说,对以给定帐户的相同字符开头的所有帐户的值求和。
推荐阅读
- python - 如何在 Opencv 中绘制中间直线并以毫米为单位计算?
- c# - 在按钮上调整图像大小
- scilab - 寻找图形中心的SCILAB代码
- node.js - 如何更新 TensorFlow.js 保存/训练的模型
- ios - 为什么在 iOS 13 中没有调用 OpenUrl(),但在 iOS 12 中却调用了。(Xamarin.ios)
- json - Delphi TRESTRequest 在尝试 TRESTRequest.AddBody() 时获取访问冲突
- c# - 默认调用asp按钮的postback方法
- webrtc - CallKit + WebRTC:在 iOS 中按下锁定/电源按钮时 CallKit 通话断开
- javascript - 如何在特定条件下更改 HTML 标签?
- excel - 为什么我看到在 64 位 excel 上运行的计算比在 32 位 excel 上慢大约 5 到 6 倍?