Sql 合并两个查询的结果,其中联接的列可能在任一表中缺少数据

Sql 合并两个查询的结果,其中联接的列可能在任一表中缺少数据,sql,sql-server,Sql,Sql Server,我觉得这有一个非常简单的解决办法,我只是在忍受大脑冻结的痛苦,但我希望你能帮助我 我有两个表,它们具有相同的布局,但数据来自不同的系统,我希望将它们合并到一个查询中以用于报告目的。但是我通常连接的列可能只有一个或另一个表中的值 表A Date | Sales ------------------- 20/12/2010 | 500 19/12/2010 | 450 表B Date | Sales ------------------- 20/12/2010 | 200

我觉得这有一个非常简单的解决办法,我只是在忍受大脑冻结的痛苦,但我希望你能帮助我

我有两个表,它们具有相同的布局,但数据来自不同的系统,我希望将它们合并到一个查询中以用于报告目的。但是我通常连接的列可能只有一个或另一个表中的值

表A

Date       | Sales
-------------------
20/12/2010 | 500
19/12/2010 | 450
表B

Date       | Sales
-------------------
20/12/2010 | 200
18/12/2010 | 70
我希望在结果集中包含以下内容:

结果

Date       | Sales A | Sales B
-------------------------------
20/12/2010 | 500     |    200
19/12/2010 | 450     |    NULL
18/12/2010 | NULL    |    70
这看起来很简单,很明显,但我无法正确理解,我们将非常感谢您的帮助。

:

使用完全外部联接
要通过在联接结果中包含不匹配行来保留不匹配信息,请使用完全外部联接。Microsoft®SQL Server™ 2000提供了完全外部联接运算符,
完全外部联接
,它包括两个表中的所有行,而不管另一个表是否具有匹配值


您可以使用
完全外部联接
来匹配两个表中的查询。然后,
isnull
可以从左侧或右侧选择日期:

select  IsNull(A.Date, B.Date) as Date
,       A.Sales as [Sales A]
,       A.Sales as [Sales B]
from    A
full outer join B
on      A.Date = B.Date

有趣的阅读:。

非常感谢!节省了我这么多时间!
select  IsNull(A.Date, B.Date) as Date
,       A.Sales as [Sales A]
,       A.Sales as [Sales B]
from    A
full outer join B
on      A.Date = B.Date