sql - 两表三列变一表四列

标签 sql sql-server select join union

我正在尝试合并两个表,每个表都有三列,其中两列是常见的。 income 表有 LocationdateAmt_recdexpense 表有 位置日期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_recdnullamt_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/

相关文章:

c# - SQL 查询只运行一次

mysql - SQL Server 中是否有等效的 SQL_CALC_FOUND_ROWS?

sql - 我们在哪里使用 BCP 命令提供密码?

mysql - 选择未按预期工作时的情况

mysql - 我怎样才能使用MySQL得到以下结果

mysql - 要选择的 SQL 查询,直到 SUM(users_count) 达到 1000

java - Spring Boot 无法成功将数据 POST 到数据库 (ORA-00942)

mysql - mysql中递归查询的更好方法

sql - 如何返回结果集以及删除

sql-server - SQL : Group by one column, 计算所有行并根据 row_number 保留第二列的值