SQL结合类似的表

时间:2018-05-07 12:05:01

标签: sql sql-server

我不确定它是否只是一个周一的脑屁,但我无法弄清楚如何将这两个表结合起来。

表1

Year    Month          EMS
2014    October         1
2015    January         6
2015    February        1
2015    April           4

表2

Year    Month          TaRR
2015    January         28
2015    February        6
2015    March           7
2015    April           5

决赛桌

Year    Month           TaRR    EMS
2014    October          0       1
2015    January          28      6
2015    February         6       1
2015    March            7       0
2015    April            5       4

正如你可以看到这两个表都有年份和月份,虽然一个表或另一个表可能一年缺少一个月,就像表2没有2014年10月那样。我怎样才能实现这一点。

1 个答案:

答案 0 :(得分:5)

你想要一个FULL JOIN。完全连接有点像左右连接,因此即使另一个表上不存在匹配的记录,也会显示两个表的记录。

SELECT
    Year = ISNULL(T.Year, N.Year),
    Month = ISNULL(T.Month, N.Month),
    TaRR = N.TaRR,
    EMS = T.EMS
FROM
    Table1 AS T
    FULL JOIN Table2 AS N ON
        T.Year = N.Year AND
        T.Month = N.Month

由于来自任何两个表的记录可能为null,您可能希望为它们设置默认值。