从多个表中获取唯一记录并汇总相应的值

时间:2017-10-10 11:10:50

标签: sql ms-access

我有一个包含3个表的数据库,让我们称之为Test1,Test2,Test3

Test1
name |value | value2
A    |0     | 0
B    |1     | 1

Test2
name |value | value2
D    |0     | 0
E    |1     | 1
A    |1     | 1
F    |1     | 1

Test3
name |value | value2
B    |1     | 0
C    |1     | 1
F    |0     | 1

请注意,表格具有相同的结构和名称'细胞可能重复。

我想要的结果是找到唯一的名字'所有3个表中的单元格,从所有3个表中得到相应值和值2的总和,即

Result
name |value | value2
A    |1     | 1
B    |2     | 1
C    |1     | 1
D    |0     | 0
E    |1     | 1
F    |1     | 2

我无法找到可以执行此操作的查询构造。我知道将表合并为一个会更容易,但不幸的是我无法做到。任何帮助/指导表示赞赏。

1 个答案:

答案 0 :(得分:1)

使用union allgroup by。我认为这适用于MS Access:

select name, sum(value) as value, sum(value2) as value2
from (select name, value, value2 from table1 union all
      select name, value, value2 from table2 union all
      select name, value, value2 from table3
     ) as t
group by name;

我认为某些旧版本的MS Access在子查询中不允许union all。在这种情况下,您需要创建一个视图并使用该视图进行最终查询。