首页 > 解决方案 > 使用 Access 合并两个不同的表

问题描述

我想合并两个具有相似和不同列的不同表。唯一不同的列是:Amount-F21 和 A-21。我的问题是,当我使用 Access 编写 SQL 请求(UNION ALL)时,它会删除 Amount A-21 列,但我需要这个。谢谢。

SELECT * FROM [Source Alloc-A21]
UNION ALL
SELECT * FROM [Source Alloc-F21]

标签: sqlms-access

解决方案


要将星号表示法Table.*与 一起使用UNION,两个表中的列必须相等。如果不是,您需要选择单个列并为两个表中缺少的列提供默认值。

例如:

SELECT TableA.A, TableA.B, TableA.[Amount-F21], 0 AS [Amount-A21]
FROM TableA
UNION ALL
SELECT TableB.A, TableB.B, 0 AS [Amount-F21], TableB.[Amount-A21]
FROM TableB

这将为任何缺失的列(Amount-F21 或 A-21)报告 0。

然后,您可以对结果求和以隐藏(默认)值。

SELECT T.A, T.B, SUM(T.[Amount-F21]) AS [Amount-F21], SUM(T.[Amount-A21]) AS [Amount-A21]
FROM (
      SELECT TableA.A, TableA.B, TableA.[Amount-F21], 0 AS [Amount-A21]
      FROM TableA
      UNION ALL
      SELECT TableB.A, TableB.B, 0 AS [Amount-F21], TableB.[Amount-A21]
      FROM TableB
) AS T
GROUP BY T.A, T.B

推荐阅读