表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只交货一次,而对应他的亏款却是2次收完的,
如此还有2008.02.01也是指教活一次,而他的发票却是分2次开完的)交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计 数量 单价 发票总计 回款单号 汇款日期 收款数量 回款单价 收款总计
----------------------------------------------------------------------------------------------------
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变成了发200个,事实上只发了100个。
请教高手给帮忙,谢谢了~~~
交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计
--------------------------------------------------------------------------------------
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只交货一次,而对应他的亏款却是2次收完的,
如此还有2008.02.01也是指教活一次,而他的发票却是分2次开完的)交货日期 交货单号 产品编号 交货数量 交货价格 交货总计 开票日期 发票号 数量 单价 发票总计 数量 单价 发票总计 回款单号 汇款日期 收款数量 回款单价 收款总计
----------------------------------------------------------------------------------------------------
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变成了发200个,事实上只发了100个。
请教高手给帮忙,谢谢了~~~
解决方案 »
- SQL语句,求解答
- 用查询分析器查询时 机器卡 如何设置优化?2G双核机器 目前是动态配置内存0-500M CPU选项未做修改
- 请问以下的sql可以怎么优化呢?
- sql语句能做的事再sql server中都可以用鼠标点击完成,比如设置主健,外健等等,还有必要学sql语句吗?
- 请教关于nText类型的操作,在线等待
- 如何每天自动生成记录?
- 有关SQLConfigDataSource
- 求一条查询语句,很简单的。60分
- 能在存储过程或别的什么地方用代码建立数据库吗?急!!!给分
- 分布式查询
- SQL语句中索引字段不要出现在表达式中,什么意思
- 表中增加一字段,类型为varchar,如何设置它的最大长度为50?
where 条件加上
b.回款单号=(select min(回款单号) from 表B where 交货单号=b.交货单号)
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 outer join B
on a.交货单号=b.交货单号 and a.产品编号=b.产品编号
//有点乱,慢慢看
----1
select distinct
id=identity(int,1,1),
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.收款总计
into E
from A
full outer join B
on a.交货单号=b.交货单号 and a.产品编号=b.产品编号---2
select id=identity(int,1,1),* into C
from
(select
isnull(a.交货单号,b.交货单号) as 交货单号,
isnull(a.产品编号,b.产品编号) as 产品编号,
isnull(a.交货数量,b.交货数量) as 交货数量,
isnull(a.交货价格,b.交货价格) as 交货价格,
isnull(a.交货总计,b.交货总计) as 交货总计
from A
full outer join B
on a.产品编号=b.产品编号 and a.交货单号=b.交货单号
) t
select min(id) as id,产品编号 , 交货数量 ,交货价格, 交货总计
into D
from c
group by 产品编号 , 交货数量 ,交货价格, 交货总计
order by min(id)
----3select e.交货日期,e.交货单号,d.产品编号,d.交货数量,d.交货价格,d.交货总计,e.开票日期,e.数量,e.单价,e.发票总计,
e.回款单号,e.回款日期,e.收款数量,e.收款单价,e.收款总计
from e
left outer join d
on e.id=d.id