MS SQL合并列B,列B用B替换A的值,除非它为NULL

时间:2013-11-12 12:39:49

标签: sql-server

我尝试使用谷歌搜索我不确定如何制定我的搜索。我搜索合并,合并,替换。欢迎提出任何其他建议或建议。我发现的结果不会替换A列的字段,但要么添加像colA field 'John'+" "+'Smith'这样的值/字符串。这不是我想要的。我发现其他人有同样的问题,但没有正确答案here

concat function不是我想要的,因为它只添加值而不是替换它们。 (不确定它运行的SQL版本)

有这个:

table1
        id  row text
row1    1   1   AAA     
row2    1   2   BBB     
row3    1   3   CCC     
row4    1   4   DDD     
row5    2   1   aaa
row6    2   2   bbb

table2
        id  row text    
row1    1   1   AAA     
row2    1   3   CCCCC       
row3    2   1   aaa     
row4    2   2   bbbbb

期望的结果:

Display
        id  row text
row1    1   1   AAA
row2    1   2   BBB
row3    1   3   CCCCC
row4    1   4   DDD
row5    2   1   aaa
row6    2   2   bbbbb

我不想修改原始记录和表格设计。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

SELECT table1.id
     , table1.row
     , Coalesce(table2.text, table1.text) As text
FROM   table1
 LEFT
  JOIN table2
    ON table2.id  = table1.id
   AND table2.row = table1.row

Coalesce()函数至少需要两个参数,并从这些值中返回第一个非空值。

另请注意,我们正在执行外部联接,以便我们拥有table1的所有值,并尽可能地匹配来自table2的值。如果您要将其更改为SELECT * ...,则可能更具说明性。