T-SQL 合并两个具有常见和不常见列的表

Posted

技术标签:

【中文标题】T-SQL 合并两个具有常见和不常见列的表【英文标题】:T-SQL merging two tables with common and uncommon columns 【发布时间】:2019-10-18 08:51:14 【问题描述】:

这是我的问题。我有两个包含常见和不常见列的表,如下所示: 在 T SQL 或 SSIS 中是否有有效的方法来执行此操作? 谢谢

表 1:

a b c
1 2 3
7 8 9 

表 2:

a d k
4 6 7
9 0 2

合并表:

a   b   c      d    k
1   2   3     null  null
7   8   9     null  null
4 null  null   6    7
9 null  null   0    2

【问题讨论】:

FULL OUTER JOIN? Using the SQL-92 FULL OUTER JOIN syntax 如果两个表的a 值相同怎么办?如果单个表中有重复项怎么办? 【参考方案1】:

您可以使用联合为缺少的列添加 null

  select a,b,c, null d, null k
  from table1
  union 
  select a,null, null,d, k
  from table1

【讨论】:

这正是我所做的,但我有近 400 列要检查,因此试图找到更简单的解决方案 基于 sql 没有快捷方式 .. 但可以在服务器端使用过程语言可以检查您的表模式 选择所有表涉及的不同列并为 400 表构建一个动态 sql 应该是方便..【参考方案2】:

你想要FULL OUTER JOIN,它在 SQLServer 中可用:

select coalesce(t1.a, t2.a), t1.b, t1.c t2.d, t2.k
from table1 t1
full outer join table2 t2 on t2.a = t1.a

【讨论】:

这里你需要ISNULL(t1.a,t2.a)(或COALESCE),否则最后两行的NULL的值将是a,而不是49 .

以上是关于T-SQL 合并两个具有常见和不常见列的表的主要内容,如果未能解决你的问题,请参考以下文章

如何在不命名所有列的情况下合并两个表?

MySQL:在没有 JOIN 或 UNION 的情况下合并两个不同的表

合并两个具有重叠 MultiIndex 列的 DataFrame

合并具有几个不同列的两个数据框

Pandas 合并具有不同列的两个数据框

将具有两个日期列的一个数据框与另一个具有两个日期列的数据框合并