从sql server中只有一个公共列的两个不同表中获取数据

从sql server中只有一个公共列的两个不同表中获取数据,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的表格如下: 请给我一个SQL查询以获得预期的结果集 Table1 A B C D E 1 2 C1 D1 E1 2 2 C2 D2 E2 3 2 C3 D3 E3 Table2 A B F G H 1 2 F1 G1 H1 2 2 F2 G2 H2 3 5 F3 G3 H3 4

我的表格如下:

请给我一个SQL查询以获得预期的结果集

Table1                  
A   B   C   D   E   
1   2   C1  D1  E1  
2   2   C2  D2  E2  
3   2   C3  D3  E3  


Table2                  
A   B   F   G   H   
1   2   F1  G1  H1  
2   2   F2  G2  H2  
3   5   F3  G3  H3  
4   6   F4  G4  H4  
预期结果:

B   C       D       E       F       G       H
2   C1      D1      E1      NULL    NULL    NULL
2   C2      D2      E2      NULL    NULL    NULL
2   C3      D3      E3      NULL    NULL    NULL
2   NULL    NULL    NULL    F1      G1      H1
2   NULL    NULL    NULL    F2      G2      H2
您需要组合两个或多个查询的结果,如下所示。由于一个表中有
C、D、E
,而另一个表中没有这些值,因此需要使用
NULL
值添加这些列,与
F、G、H
相同:

SELECT *
FROM (
    SELECT  B,   
            C,   
            D,   
            E, 
            NULL F, 
            NULL G, 
            NULL H  
    FROM Table1 t1
    UNION
    SELECT  B,  
            NULL C,
            NULL D, 
            NULL E,  
            F,   
            G,   
            H  
    FROM Table2 t2
) t
WHERE B = 2
输出:

B   C       D       E       F       G       H
2   C1      D1      E1      NULL    NULL    NULL
2   C2      D2      E2      NULL    NULL    NULL
2   C3      D3      E3      NULL    NULL    NULL
2   NULL    NULL    NULL    F1      G1      H1
2   NULL    NULL    NULL    F2      G2      H2

到目前为止有什么尝试吗?逻辑到底是什么?这个网站是关于修复其他人的代码(或sql)不起作用。这与他们的全部工作无关。结果背后的逻辑是什么?你到目前为止做了些什么?编辑你的Q plz并放入一些代码事实上,我不认为这个问题与
join
有关,也许你应该使用
union
我认为
join
会起作用。