首页 > 解决方案 > 在一个公共列上连接三个表

问题描述

我有三个名为 Table1、Table2 和 Table3 的表。表 1 有列(mobNum bigint,visitedUS DateTime)。Table2 有列(mobNum bigint,visitedUK DateTime)。Table3 有列(mobNum bigint,visitedChina DateTime)。样本数据如下

表格1

___________________________       
    mobnum | visitedUS
___________________________ 
9000000001 |  20/10/18  
___________________________ 
9000000001 | 11/07/19  
___________________________ 
9000000002 | 01/02/17
___________________________

表2

    mobnum | visitedUK
___________________________ 
9000000001 | 03/05/19  
___________________________ 
9000000002 |10/10/18  
___________________________

表3

    mobnum | visitedChina
___________________________ 
9000000001 | 15/03/18 
___________________________ 

现在我希望 SQL 查询显示如下结果

              Result Table
   -------------------------------------------------------
   mobnum      | visitedUS    | visitedUK  | visitedChina  
   -------------------------------------------------------
     9000000001|20/10/18      |  03/05/19  |  15/03/18    
   -------------------------------------------------------
     9000000001|11/07/19      |  Null      |   Null       
   -------------------------------------------------------
     9000000002|01/02/17      | 10/10/18   |   Null       
   -------------------------------------------------------

标签: sqlsql-server

解决方案


我没有测试或仔细检查拼写/语法:

select 
    isnull(t1.mobnum,isnull(t2.mobnum,t3.mobnum)) mobnum,
    t1.visitedUS, 
    t2.visitedUK, 
    t3.visitedChina
from Table1 t1
full outer join Table2 t2 on t1.mobnum = t2.mobnum
full outer join Table3 t3 on t3.mobnum = isnull(t1.mobnum,t2.mobnum)

推荐阅读