【问题标题】:Get unique records from multiple tables and sum corresponding values从多个表中获取唯一记录并对对应的值求和
【发布时间】:2017-10-10 11:10:50
【问题描述】:

我有一个包含 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 个表中获得相应 value 和 value2 的总和,即

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

我真的想不出一个可以做到这一点的查询结构。我知道将表格合并为一个会更容易,但不幸的是我做不到。任何帮助/指南表示赞赏。

【问题讨论】:

标签: sql ms-access


【解决方案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。在这种情况下,您需要创建一个视图并将该视图用于最终查询。

【讨论】:

  • 好的,这有帮助。不得不有点挣扎,因为显然 MS Access 需要在按名称、值、值进行分组时列出所有列;终于允许这个查询工作了:) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多