如何将两个SQL查询结果合并为单一输出表格?
解决方案:通过JOIN合并两个查询结果为单表
你需要的是横向合并列,而非UNION那种纵向合并行,因此应该用JOIN基于共同的Model字段关联两个查询结果。
先明确你的基础查询逻辑
假设两个原始查询分别为:
- 车辆销售报表查询:
SELECT Model, COUNT(*) AS "# of vehicles sold" FROM sales_records -- 替换为你的实际销售表名 GROUP BY Model;
- 新增车辆报表查询:
SELECT Model, COUNT(*) AS "# of vehicles added" FROM new_inventory -- 替换为你的实际新增车辆表名 GROUP BY Model;
合并后的完整SQL查询
将两个查询作为子查询,用FULL OUTER JOIN关联(确保所有车型都能显示,哪怕某一个查询无对应数据),并用COALESCE把空值替换为0:
SELECT COALESCE(s.Model, a.Model) AS Model, COALESCE(s."# of vehicles sold", 0) AS "# of vehicles sold", COALESCE(a."# of vehicles added", 0) AS "# of vehicles added" FROM ( -- 销售数据子查询 SELECT Model, COUNT(*) AS "# of vehicles sold" FROM sales_records GROUP BY Model ) s FULL OUTER JOIN ( -- 新增车辆子查询 SELECT Model, COUNT(*) AS "# of vehicles added" FROM new_inventory GROUP BY Model ) a ON s.Model = a.Model ORDER BY Model;
关键说明
- 若能确定所有车型在两个表中都有对应数据,可改用
INNER JOIN简化查询;FULL OUTER JOIN是为了覆盖“仅在销售/仅在新增数据中出现的车型”场景。 COALESCE用于处理单边无数据的情况,把默认的NULL替换为0,让报表更直观。UNION不适用的原因是它会把两个查询的行合并到同一列下,不符合你“同一行展示同一车型两个指标”的需求。
内容的提问来源于stack exchange,提问作者westsider98
相关产品推荐
相关产品推荐

