合并2个查询的结果,其中连接列可能缺少任一表中的数据

Mar*_*tyn 2 sql sql-server

我觉得这有一个非常简单的解决方案,我只是在脑部冻结,但我希望你能帮忙.

我有2个表具有相同的布局,但来自不同系统的数据,我想在查询中将它们组合起来用于报告.但是我通常加入的列可能只有一个或另一个表中的值.

表A.

Date       | Sales
-------------------
20/12/2010 | 500
19/12/2010 | 450
Run Code Online (Sandbox Code Playgroud)

表B.

Date       | Sales
-------------------
20/12/2010 | 200
18/12/2010 | 70
Run Code Online (Sandbox Code Playgroud)

我想在结果集中这些:

结果

Date       | Sales A | Sales B
-------------------------------
20/12/2010 | 500     |    200
19/12/2010 | 450     |    NULL
18/12/2010 | NULL    |    70
Run Code Online (Sandbox Code Playgroud)

这看起来如此简单明了,但我无法做到正确,非常感谢帮助.

GSe*_*erg 6

在SQL Server中使用外部联接:

使用完全外部联接
要通过在联接的结果中包含不匹配的行来保留不匹配的信息,请使用完整的外部联接.Microsoft®SQLServer™2000提供完整的外部联接运算符,FULL OUTER JOIN其中包括两个表中的所有行,而不管其他表是否具有匹配值.

select
  coalesce(TableA.Date, TableB.Date) as Date,
  TableA.Sales as SalesA,
  TableB.Sales as SalesB
from
  TableA
  full join TableB on TableA.Date = TableB.Date
Run Code Online (Sandbox Code Playgroud)