sql - 将两个选择查询的结果合并到一张表中
问题描述
我有以下两个表:
STOCK_ON_HAND:这显示了我手头的所有库存 STOCK_ON_ORDER:这显示了我订购的所有库存
我有以下两个查询来总结表格:
SELECT STOCK_CODE, SUM(QTY)
FROM STOCK_ON_HAND
GROUP BY STOCK_CODE
HAVING SUM(QTY) <>0;
和
SELECT STOCK_CODE, SUM(ON_ORDER)
FROM STOCK_ON_ORDER
GROUP BY STOCK_CODE
HAVING SUM(STOCK_ON_ORDER) <>0;
我基本上想将以上内容组合到一个显示以下字段的表格中:
- STOCK_CODE
- STOCK_ON_HAND
- STOCK_ON_ORDER
实现这一目标的最佳方法是什么?
解决方案
我建议UNION ALL
在聚合之前做一个:
SELECT STOCK_CODE, SUM(on_hand), SUM(on_order)
FROM (SELECT STOCK_CODE, SUM(QTY) as on_hand, 0 on_order
FROM STOCK_ON_HAND
GROUP BY STOCK_CODE
UNION ALL
SELECT STOCK_CODE, 0, SUM(ON_ORDER) as on_order
FROM STOCK_ON_ORDER
GROUP BY STOCK_CODE
) s
GROUP BY STOCK_CODE
HAVING on_hand <> 0 OR on_order <> 0;
UNION ALL
如果 MS Access在子句中不支持FROM
,您可以使用视图进行设置。
推荐阅读
- python - 展平 dict/list 对象 - Python vs Sql?
- c - 使用不透明指针时 _init 和 _new 函数有何不同?
- python - 如何修复错误:TypeError: expected str, bytes or os.PathLike object, not list
- flutter - 如何在颤动中映射 Elasticsearch match_phrase 查询
- asp.net-core - SoapCore Asp.net 核心 3.1 标头
- angular - Error using session storage with Angular 10
- macos - 与原生 macOS 可执行文件相比,为什么我的 u64 Rust 程序使用 Docker(桌面)运行得更快?
- python - 当我在第二个窗口上单击 pb_2 时,如何将第二个窗口上选择的 listWidget 值传输到第一个窗口上的 lineEdit
- amazon-dynamodb - 根据 TTL 过滤记录
- postgresql - 在 Postgres 中防止空字符串的全局方法