使用full join,例如:
select isnull(a.id , b.id) id , isnull(a.val , b.val) val from
a full join b on a.id = b.id
具体的列名,自己更改.
select isnull(a.id , b.id) id , isnull(a.val , b.val) val from
a full join b on a.id = b.id
具体的列名,自己更改.
这个需求可以再做完full join以后用where来判断,只去想要的记录
对合并后的数据存表进一步处理.--生成测试数据(合并后的数据)
select '2008.01.01' 交货日期,20 交货单号,11101 产品编号,100 交货数量,4 交货价格,400 交货总计,
771 回款单号,'2008.01.29' 回款日期,50 收款数量,4 收款单价,200 收款总计 into #t
union all select '2008.01.01',20,11101,100,4,400,772,'2008.01.29',50,4,200
union all select '2008.01.01',22,11101,100,4,400,772,'2008.01.29',50,4,200
union all select '2008.01.01',21,11101,100,4,400,772,'2008.01.29',50,4,200
union all select '2008.01.01',22,11101,100,4,400,772,'2008.01.29',50,4,200 --生成排序过渡表
select * into #t1 from #t order by 交货单号 --数据处理
declare @交货单号 varchar(10)
declare @交货数量 varchar(10)
declare @交货价格 varchar(10)
declare @交货总计 varchar(10)
set @交货单号=''
update #t1 set @交货数量=case when @交货单号=交货单号 then '' else 交货数量 end,
@交货价格=case when @交货单号=交货单号 then '' else 交货价格 end,
@交货总计=case when @交货单号=交货单号 then '' else 交货总计 end,
@交货单号=交货单号,
交货数量= @交货数量,
交货价格= @交货价格,
交货总计= @交货总计
select * from #t1
/*结果
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 回款单号 回款日期 收款数量 收款单价 收款总计
2008.01.01 20 11101 100 4 400 771 2008.01.29 50 4 200
2008.01.01 20 11101 0 0 0 772 2008.01.29 50 4 200
2008.01.01 21 11101 100 4 400 772 2008.01.29 50 4 200
2008.01.01 22 11101 100 4 400 772 2008.01.29 50 4 200
2008.01.01 22 11101 0 0 0 772 2008.01.29 50 4 200*/