我正在尝试合并两个表,每个表都有三列,其中两列是常见的。 income
表有 Location
、date
和 Amt_recd
,expense
表有 位置
、日期
和Amt_spent
。我想合并这两个表,所以有一个表有四列,并且任何共同的日期都合并到一行。我试过这个:
select location, date, amt_recd, null as amt_spent
from income
union
select location, date, null as amt_recd, amt_spent
from expense
它只让我走了一步,因为它不会像日期一样组合成一行,它有两行,其中 amt_recd
是 null
和 amt_spent
在另一个中是 null
。什么是构建它的更好方法,以便我得到更浓缩的结果?我已经尝试了各种联接而不是并集,但一直无法获得我正在寻找的结果。
最佳答案
假设 (location, date) 的组合在每个表中都是唯一的,您声明 union
是错误的工作工具并查看 join
是正确的>s 代替。由于您可能有没有支出的收入或没有收入的支出,因此完全外部联接
是有序的:
SELECT i.location, i.date, i.amt_recd, e.amt_spent
FROM income i
FULL OUTER JOIN expense e ON i.location = e.location AND i.date = e.date
关于sql - 两表三列变一表四列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649710/