日期:2014-05-17 浏览次数:20465 次
表1 [a] [b] [c] www 123 69.09 fff 998 69.08 uuu 388 69.06 表2 [e] [d] [c] [f] ttt ddd 89.12 u78 usa jio 83.21 pok 结果:表3 [a] [b] [c] [e] [d] [f] www 123 69.09 fff 998 69.08 uuu 388 69.06 89.12 ttt ddd u78 83.21 usa jio pok
declare @t table(a varchar(20),b varchar(20) ,c varchar(20)) insert into @t select 'www' , '123' , '69.09' union all select 'fff', '998', '69.08' union all select 'uuu', '388', '69.06' declare @t1 table(e varchar(20),d varchar(20),c varchar(20),f varchar(20)) insert into @t1 select 'ttt' , 'ddd ' , '89.12' , 'u78' union all select 'usa', 'jio', '83.21', 'pok' select isnull(a,'') a,isnull(b,'') b,c=ISNULL(t.c,t1.c),isnull(e,'') e,isnull(d,'') d ,isnull(f,'') f from @t t full join @t1 t1 on t.c=t1.c SELECT A,B,C,'' e,'' d,'' f FROM @t UNION ALL SELECT '','',C,E,D,F FROM @t1 /* a b c e d f -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- www 123 69.09 fff 998 69.08 uuu 388 69.06 89.12 ttt ddd u78 83.21 usa jio pok (5 行受影响) */
------解决方案--------------------
---测试数据---
if object_id('[t1]') is not null drop table [t1]
go
create table [t1]([a] varchar(3),[b] int,[c] numeric(4,2))
insert [t1]
select 'www',123,69.09 union all
select 'fff',998,69.08 union all
select 'uuu',388,69.06
if object_id('[t2]') is not null drop table [t2]
go
create table [t2]([e] varchar(3),[d] varchar(3),[c] numeric(4,2),[f] varchar(3))
insert [t2]
select 'ttt','ddd',89.12,'u78' union all
select 'usa','jio',83.21,'pok'
-->查询
declare @sql1 varchar(8000),@sql2 varchar(8000)
select @sql1=isnull(@sql1+',','')+name from syscolumns where id=object_id('t1')
select @sql1=@sql1+','''' as '+name from syscolumns where id=object_id('t2') and name not in(select name from syscolumns where id=object_id('t1'))
select @sql2=isnull(@sql2+',','')+''''' as '+name from syscolumns where id=object_id('t1') and name not in(select name from syscolumns where id=object_id('t2'))
select @sql2=@sql2+','+name from syscolumns where id=object_id('t2')
exec ('select '+@sql