读书人

请问一个多表匹配查询有关问题

发布时间: 2012-04-06 12:22:24 作者: rapoo

请教一个多表匹配查询问题,急!!!!!!!!
表一结构
外发单号 物料名称 规格 数量 单位 要求回厂时间
W001 A XL 3000 件 2011-06-19
W001 B SL 5000 件 2011-06-19
W001 C SL 500 件 2011-06-14
W002 B SL 1000 件 2011-06-30
W003 C SL 1000 件 2011-06-30

表二结构
回厂单号 外发单号 物料名称 规格 数量 单位 回厂时间
S001 W001 A XL 1000 件 2011-06-15
S002 W001 B SL 2000 件 2011-06-18
S002 W001 C SL 500 件 2011-06-18
S003 W002 B SL 1000 件 2011-06-19
S004 W001 A XL 1000 件 2011-06-16

求查询结果集
外发单号 物料名称 规格 数量 单位 要求回厂时间 回厂数量 回厂时间 数量差额 时间差额 达成率

W001 A XL 3000 件 2011-06-19 2000 2011-06-16 -1000 3 66%
W001 B SL 5000 件 2011-06-19 2000 2011-06-18 -3000 -1 0%
W001 C SL 500 件 2011-06-14 500 2011-06-18 0 -4 0%
W002 B SL 1000 件 2011-06-30 1000 2011-06-19 0 0 100%
W003 C SL 1000 件 2011-06-30 0 -1000 11 0%

假如今天是2011-06-19,求这样的结果集怎样写SQL。

[解决办法]
select 外发单号,物料名称,规格,数量,单位,要求回厂时间,isnull(b.回厂数量,0) as 回厂数量,b.回厂时间,isnull(b.回厂数量,0)-a.数量 as 数量差额,DateDiff(d,a.要求回厂时间,isnull(b.回厂时间,GetDate())) as 时间差额,case when isnull(b.回厂时间,getdate())<=要求回厂时间 then isnull(b.回厂数量,0)/a.数量 else 0 end as 达成率
from 表一 a left join (select 外发单号,物料名称,规格,sum(数量) as 回厂数量,max(回厂时间) as 回厂时间 from 表二 group by 外发单号,物料名称,规格) b on a.外发单号=b.外发单号 and a.物料名称=b.物料名称 and a.规格=b.规格
order by b.回厂时间,a.要求回厂时间,a.外发单号
[解决办法]
推荐一个思路:
1.DELPHI添加三个表格查询控件,很简单的,SELECT * FROM 表一,
2.在第二个表的查询控件这只主表查询为控件表一,关联主键为:外发单号:把查询加上 where 外发单号:=外发单号
3.第三个表查询设置同2步即可

读书人网 >.NET

热点推荐