2016-11-30 66 views
-1

我想合并MSSQL中没有公共列的两个表,同时将每个表中的所有行保存为合并表中的单独行。合并两个没有公共列的表

场景:

Table A Col1 Col2 
    1  1.Col1 1.Col2 
    2  2.Col1 2.Col2 

Table B Col3 
    3  3.Col3 

这是我所期待的:

Table Col1 Col2 Col3 
    1 1.Col1 1.Col2 Null 
    2 2.Col1 2.Col2 Null 
    3 Null Null 3.Col3 
+0

一个简单的答案会是空列从每个表添加到选择和然后结合这两个结果集。 –

回答

1

只需使用Union并选择NULL为其他列,以避免:使用UNION

所有查询相结合,INTERSECT或EXCEPT运营商必须有 具有相同数量的表达式sions在他们的目标列表中。

演示: -

Create table #Table1 (A int, Col1 varchar (10), Col2 varchar(10)) 
Create table #Table2 (b int, Col3 varchar (10)) 

insert into #Table1 values (1,'1.Col1',' 1.Col2') 
insert into #Table1 values (2,'2.Col1','2.Col2') 

insert into #Table2 values (3,'3.Col3') 

select A,Col1,Col2,null as Col3 from #Table1 
union 
select B,null,null,Col3 from #Table2 

go 
drop table #Table1 
go 
drop table #Table2 

结果: -

enter image description here

1
Select A,Col1,Col2,null as Col3 from tblA Union All Select B,null ,null ,Col3 from tblB 
相关问题