表A:
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计
--------------------------------------------------------------------------------------
2008.01.01 20 11101 100 4 400 2008.02.22 null null null null
2008.02.01 23 10301 50 60 3000 2008.02.19 33 50 50 3000
2008.02.01 25 10501 600 4 2400 2008.02.19 32 600 3.5 2400
2008.02.01 30 10302 100 75 7500 null null null null null
2008.02.01 31 10401 900 4 3600 2008.02.19 53 600 4 2400
2008.02.01 31 10401 900 4 360 2008.02.29 54 300 4 1200
2008.02.01 33 10202 100 12 1200 2008.02.19 28 100 26 2600
2008.02.01 35 10201 100 15 1200 2008.02.01 null null null null表B:
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 回款单号 回款日期 收款数量 回款单价 收款总计
2008.01.01 20 11101 100 4 400 771 2008.01.29 50 4 200
2008.01.01 20 11101 100 4 400 772 2008.01.30 50 4 200
2008.02.01 23 10301 50 60 3000
2008.02.01 25 10501 600 4 2400
2008.02.01 30 10302 100 75 7500
2008.02.01 31 10401 600 4 2400
2008.02.01 39 10302 50 70 3500
要求合并形成如下:交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计 数量 单价 发票总计 回款单号 汇款日期 收款数量 回款单价 收款总计
2008.01.01 20 11101 100 4 400 null null null null null 771 2008.01.29 50 4 200
2008.01.01 20 11101 null null null null null null null null 771 2008.01.29 50 4 200
2008.02.01 23 10301 50 60 3000 2008.02.19 33 50 50 3000 null null null null null
2008.02.01 25 10501 600 4 2400 2008.02.19 32 600 3.5 2400 null null null null null
2008.02.01 30 10302 100 75 7500 2008.02.29 null null null null null null null null null
2008.02.01 31 10401 900 4 3600 2008.02.19 53 600 4 2400 null null null null null
2008.02.01 31 10401 null null null 2008.02.29 54 300 4 1200 null null null null null
2008.02.01 33 10202 100 26 2600 2008.02.19 28 100 26 2600 null null null null null
2008.02.01 35 10201 100 12 1200 null null null null null null null null null null
2008.02.01 39 10302 50 70 3500 null null null null null null null null null null
================================================================================================
画得有点乱,大概就是这么意思,有知道的告诉下,谢谢
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计
--------------------------------------------------------------------------------------
2008.01.01 20 11101 100 4 400 2008.02.22 null null null null
2008.02.01 23 10301 50 60 3000 2008.02.19 33 50 50 3000
2008.02.01 25 10501 600 4 2400 2008.02.19 32 600 3.5 2400
2008.02.01 30 10302 100 75 7500 null null null null null
2008.02.01 31 10401 900 4 3600 2008.02.19 53 600 4 2400
2008.02.01 31 10401 900 4 360 2008.02.29 54 300 4 1200
2008.02.01 33 10202 100 12 1200 2008.02.19 28 100 26 2600
2008.02.01 35 10201 100 15 1200 2008.02.01 null null null null表B:
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 回款单号 回款日期 收款数量 回款单价 收款总计
2008.01.01 20 11101 100 4 400 771 2008.01.29 50 4 200
2008.01.01 20 11101 100 4 400 772 2008.01.30 50 4 200
2008.02.01 23 10301 50 60 3000
2008.02.01 25 10501 600 4 2400
2008.02.01 30 10302 100 75 7500
2008.02.01 31 10401 600 4 2400
2008.02.01 39 10302 50 70 3500
要求合并形成如下:交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计 数量 单价 发票总计 回款单号 汇款日期 收款数量 回款单价 收款总计
2008.01.01 20 11101 100 4 400 null null null null null 771 2008.01.29 50 4 200
2008.01.01 20 11101 null null null null null null null null 771 2008.01.29 50 4 200
2008.02.01 23 10301 50 60 3000 2008.02.19 33 50 50 3000 null null null null null
2008.02.01 25 10501 600 4 2400 2008.02.19 32 600 3.5 2400 null null null null null
2008.02.01 30 10302 100 75 7500 2008.02.29 null null null null null null null null null
2008.02.01 31 10401 900 4 3600 2008.02.19 53 600 4 2400 null null null null null
2008.02.01 31 10401 null null null 2008.02.29 54 300 4 1200 null null null null null
2008.02.01 33 10202 100 26 2600 2008.02.19 28 100 26 2600 null null null null null
2008.02.01 35 10201 100 12 1200 null null null null null null null null null null
2008.02.01 39 10302 50 70 3500 null null null null null null null null null null
================================================================================================
画得有点乱,大概就是这么意思,有知道的告诉下,谢谢
select a.*, b.回款单号 , b.回款日期 , b.收款数量 , b.回款单价 , b.收款总计
from 表A a,表B b
where a.交货日期=b.交货日期
and a.交货单号=b.交货单号
from 表A a left join 表B b on a.交货单号=b.交货单号 and a.交货日期=b.交货日期
from a,b
where a.交货日期=b.交货日期 and a.交货单号=b.交货单号
if object_id('[A]') is not null drop table [A]
go
create table [A]([交货日期] datetime,[交货单号] int,[产品编号] int,[交货数量] int,[交货价格] int,[交货总计] int,[开票日期] datetime,[发票号] int,[数量] int,[单价] numeric(3,1),[发票总计] int)
insert [A]
select '2008.01.01',20,11101,100,4,400,'2008.02.22',null,null,null,null union all
select '2008.02.01',23,10301,50,60,3000,'2008.02.19',33,50,50,3000 union all
select '2008.02.01',25,10501,600,4,2400,'2008.02.19',32,600,3.5,2400 union all
select '2008.02.01',30,10302,100,75,7500,null,null,null,null,null union all
select '2008.02.01',31,10401,900,4,3600,'2008.02.19',53,600,4,2400 union all
select '2008.02.01',31,10401,900,4,360,'2008.02.29',54,300,4,1200 union all
select '2008.02.01',33,10202,100,12,1200,'2008.02.19',28,100,26,2600 union all
select '2008.02.01',35,10201,100,15,1200,'2008.02.01',null,null,null,null
if object_id('[B]') is not null drop table [B]
go
create table [B]([交货日期] datetime,[交货单号] int,[产品编号] int,[交货数量] int,[交货价格] int,[交货总计] int,[回款单号] int,[回款日期] datetime,[收款数量] int,[回款单价] int,[收款总计] int)
insert [B]
select '2008.01.01',20,11101,100,4,400,771,'2008.01.29',50,4,200 union all
select '2008.01.01',20,11101,100,4,400,772,'2008.01.30',50,4,200 union all
select '2008.02.01',23,10301,50,60,3000,null,null,null,null,null union all
select '2008.02.01',25,10501,600,4,2400,null,null,null,null,null union all
select '2008.02.01',30,10302,100,75,7500,null,null,null,null,null union all
select '2008.02.01',31,10401,600,4,2400,null,null,null,null,null union all
select '2008.02.01',39,10302,50,70,3500,null,null,null,null,null
---查询---
select
isnull(a.交货日期,b.交货日期) as 交货日期,
isnull(a.交货单号,b.交货单号) as 交货单号,
isnull(a.产品编号,b.产品编号) as 产品编号,
isnull(a.交货数量,b.交货数量) as 交货数量,
isnull(a.交货价格,b.交货价格) as 交货价格,
isnull(a.交货总计,b.交货总计) as 交货总计,
a.开票日期,
a.发票号,
a.数量,
a.单价,
a.发票总计,
b.回款单号,
b.回款日期,
b.收款数量,
b.回款单价,
b.收款总计
from
a
full join
b
on
a.交货日期=b.交货日期
and
a.交货单号=b.交货单号
and
a.产品编号=b.产品编号
---结果---
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计 回款单号 回款日期 收款数量 回款单价 收款总计
------------------------------------------------------ ----------- ----------- ----------- ----------- ----------- ------------------------------------------------------ ----------- ----------- ----- ----------- ----------- ------------------------------------------------------ ----------- ----------- -----------
2008-01-01 00:00:00.000 20 11101 100 4 400 2008-02-22 00:00:00.000 NULL NULL NULL NULL 771 2008-01-29 00:00:00.000 50 4 200
2008-01-01 00:00:00.000 20 11101 100 4 400 2008-02-22 00:00:00.000 NULL NULL NULL NULL 772 2008-01-30 00:00:00.000 50 4 200
2008-02-01 00:00:00.000 23 10301 50 60 3000 2008-02-19 00:00:00.000 33 50 50.0 3000 NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 25 10501 600 4 2400 2008-02-19 00:00:00.000 32 600 3.5 2400 NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 30 10302 100 75 7500 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 31 10401 900 4 3600 2008-02-19 00:00:00.000 53 600 4.0 2400 NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 31 10401 900 4 360 2008-02-29 00:00:00.000 54 300 4.0 1200 NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 33 10202 100 12 1200 2008-02-19 00:00:00.000 28 100 26.0 2600 NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 35 10201 100 15 1200 2008-02-01 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL
2008-02-01 00:00:00.000 39 10302 50 70 3500 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL(所影响的行数为 10 行)
isnull(a.交货日期,b.交货日期) as 交货日期,
isnull(a.交货单号,b.交货单号) as 交货单号,
isnull(a.产品编号,b.产品编号) as 产品编号,
isnull(a.交货数量,b.交货数量) as 交货数量,
isnull(a.交货价格,b.交货价格) as 交货价格,
isnull(a.交货总计,b.交货总计) as 交货总计,
a.开票日期,
a.发票号,
a.数量,
a.单价,
a.发票总计,
b.回款单号,
b.回款日期,
b.收款数量,
b.回款单价,
b.收款总计
from
a
full join
b
on
a.交货日期=b.交货日期
and
a.交货单号=b.交货单号
and
a.产品编号=b.产品编号