合并两个表并添加其他列

时间:2015-05-22 14:21:41

标签: sql sql-server

我正在使用sql-server。我有两张桌子(下面简单的快照)。

 table hlds                table bench
 name  country  wgt        name  country  wgt
 abc   us       30         abc   us       40
 mno   uk       50         ppp   fr       45
 xyz   us       20         xyz   us       15

我想要做的是计算wgt列中的差异并将结果插入另一个表中,让我们称之为merge_tbl。我想做的另一件事是merge_tbl有一个位列,如果公司存在于表格中,它就是1。

所以我希望结果如下所示,

 merge_tbl
 name  country  wgt  inHld
 abc   us       -10  1
 mno   uk       50   1
 xzy   us       5    1
 ppp   fr       -45  0

我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

我认为您需要FULL OUTER JOIN才能从两个表中获取记录。然后,您可以使用INSERT INTO SELECT语句来执行插入:

INSERT INTO merge_tbl
SELECT COALESCE(h.name, b.name) AS name, 
       COALESCE(h.country, b.country) AS country, 
       COALESCE(h.wgt, 0) - COALESCE(b.wgt, 0) AS wgt,
       CASE WHEN h.name IS NOT NULL THEN 1
            ELSE 0
       END AS inHld
FROM hlds AS h
FULL OUTER JOIN bench AS b ON h.name = b.name AND h.country = b.country

ON操作的JOIN子句取决于您的实际要求。如果 hldsbench字段相等,我假设namecountry表中的记录匹配。

Demo here