如何将两个sql表中的行和列合并到一个表中

时间:2018-02-23 10:09:51

标签: sql sql-server merge

我搜索了一会儿,但我找不到类似的东西 我有两个数据表,我想将这两个合并为两个。

Tbl1
id nr val1
1  a1  123
2  a2  124
3  a3  125

Tbl2
id nr val2
5  a1  223
6  a2  224
7  a4  225

结果表应该是这样的。

Tbl
nr val1 val2
a1  123  223
a2  124  224
a3  125    0
a4    0  225

任何帮助将不胜感激。提前谢谢。

这是MS SQL,我尝试了联合和加入。但他们做不到。

3 个答案:

答案 0 :(得分:1)

如果您使用MS SQL,那么您可以尝试使用完全外连接和Isnull函数来获得所需的结果。

SELECT Isnull(tbl1.nr, tbl2.nr) nr, 
    Isnull(tbl1.val1, 0) val1,
      Isnull(Tbl2.val2, 0) val2 FROM tbl1 FULL OUTER JOIN tbl2 ON tbl1.nr = tbl2.nr

答案 1 :(得分:0)

您可以通过同时执行FULL OUTER JOINCOALESCE列来完成此操作。

SELECT COALESCE(tbl1.nr,tbl2.nr) AS nr,tbl1.val1,tbl2.val2 
FROM tbl1 FULL OUTER JOIN tbl2 
ON tbl1.nr = tbl2.nr;

答案 2 :(得分:0)

SELECT NVL(a1.nr,b1.nr) as nr,
       NVL(a1.val1,0) AS val1,
       NVL(b1.val2,0) AS val2
FROM table1 a1
     FULL OUTER JOIN table2 b1 ON a1.nr = b1.nr
ORDER BY a1.nr;