mysql - 根据匹配条件连接表并从 Table1.Quantity 的总和中减去 Table2.Quantity 的总和以匹配行
问题描述
我正在使用下面的代码:table1-add,table2-remove
SELECT add.description, add.size, (sum(add.qty) - sum(remove.qty)) AS OnHand
`FROM add LEFT JOIN remove ON (add.description = remove.description) AND `(add.size = remove.size)
group by add.description, add.size
OnHand FROM add RIGHT JOIN remove ON (add.description = remove.description) AND
(add.size = remove.size) WHERE add.description IS NULL and add.size is null
group by add.description, add.size;
我的目标在标题中表达。
我尝试了其他一些方法,但它不会在减法之前对列进行求和。它仅减去第一个匹配条目。
其他方法:
SELECT add.description, add.size, sum(add.qty) - sum(remove.qty) AS OnHand
FROM add INNER JOIN remove
ON add.description = remove.description
WHERE add.size = remove.size
GROUP BY add.description, add.size;
解决方案
看起来你需要先做组,计算每个表的总和 - 然后做减法;
SELECT t1.description, t1.size, (sum_add - sum_rem) AS OnHand
FROM
( SELECT add.description, add.size, sum(add.qty) as sum_add from add GROUP BY add.description, add.size )t1
INNER JOIN
( SELECT remove.description, remove.size, sum(remove.qty) as sum_rem from remove GROUP BY remove.description, remove.size )t2
ON t1.description = t2.description and t1.size = t2.size
代码未经测试,可能可以以更好的方式完成 - 但这应该有效。
推荐阅读
- reactjs - 我可以在同一个 cpanel 帐户中托管 Django REST 和 React 吗?
- npm - npm install 返回 401 Unauthorized - Gitlab NPM 注册表(私有)
- c# - LeapMotion Controller CLass RemoveListener MISSING
- python - 从 PHP 运行 Python 脚本时出现 PermissionError
- php - 函数import 'assig(截断...)的一个或多个参数
- c++ - 如何使用 octave 库运行 C++ 代码以及如何在 ubuntu for C++ 中安装 octave 库
- sql - 将 INSERT 查询转换为等效的表视图
- python - N次迭代后如何停止sage图生成迭代器?
- python - 防止 Pandas 剥离符号字符
- python - 当我尝试导入包时出现 ModuleNotFoundError