首页 > 解决方案 > 将两个选择查询的结果合并到一张表中

问题描述

我有以下两个表:

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;

我基本上想将以上内容组合到一个显示以下字段的表格中:

实现这一目标的最佳方法是什么?

标签: sqlms-access

解决方案


我建议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,您可以使用视图进行设置。


推荐阅读