Excel VBA SQL如何多表联合查询?

我想在Excel VBA 中用条SQL语句实现如附图想达到的效果,本人想了好久实在是想不出来,故麻烦各位帮我用SQL语句写写!本人在线等候!
刚才图片有问题现有更新

我也是个新手,趁此机会学习了一下,技术不高,写的太长了,基本符合要求,除了那生产信息,销售信息的合并单元格外

select abcg.型号,阶段,生产日期,生产数,不良数,销售日期,销售数量 from (select abc.型号,阶段,日期,生产日期,生产数,不良数 from (select a.型号,阶段,日期 from [表A$] a left join (select 型号,生产日期 as 日期 from [表B$] UNION select 型号,销售日期 as 日期 from [表C$]) bc on a.型号=bc.型号) abc left join (select 型号,生产日期,SUM(生产数) AS 生产数,SUM(不良数) AS 不良数 from [表B$] group by 型号,生产日期) bg ON abc.型号=bg.型号 and abc.日期=bg.生产日期) abcg left join (select 型号,销售日期,SUM(销售数量) AS 销售数量 from [表C$] group by 型号,销售日期) cg on abcg.型号=cg.型号 and abcg.日期=cg.销售日期 order by abc.型号,abc.日期

刚少了个排序

追问

看这个比较头晕呵呵,你能告诉下你的思路吗?

追答

1,把BC表的型号和日期用union连接成不重复的,命名为bc,两个字段,型号,日期
2,把a表和bc通过left join生成字段为型号,阶段,日期的新表,命名为abc
3,把b和c表分别按型号和日期汇总,分别命名为bg,cg
4,最后用两个left join把bg,cg,加到abc里去,其中的日期项用来使bg,cg的记录按日期对应

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-16
Excel VBA SQL如何多表联合查询的方法如下:
1、中间结果法,按你自己的想法,根据要实现的结果,分成几个步骤来实现,每一步都把结果存到临时表中,即可。

2、直接sql查询法:
可以按下面的思路来写,具体的还要自己再调试一下:

Select
A.型号,A.阶段,
B.生产日期,生产型号=B.型号,B.生产数,
B.不良数,
C.销售日期,销售型号=C.型号,C.销售数量
From 表A A,
(Select 生产日期,型号,
生产数=Sum(生产数),不良数=Sum(不良数) From 表B
Group By 生产日期,型号
)B,
(Select 销售日期,型号,
销售数量=Sum(销售数量) From 表C
Group By 销售日期,型号
)C
Where A.型号 = B.型号 And A.型号=C.型号
第2个回答  2012-03-09
select abcg.型号,阶段,生产日期,生产数,不良数,销售日期,销售数量 from (select abc.型号,阶段,日期,生产日期,生产数,不良数 from (select a.型号,阶段,日期 from [表A$] a left join (select 型号,生产日期 as 日期 from [表B$] UNION select 型号,销售日期 as 日期 from [表C$]) bc on a.型号=bc.型号) abc left join (select 型号,生产日期,SUM(生产数) AS 生产数,SUM(不良数) AS 不良数 from [表B$] group by 型号,生产日期) bg ON abc.型号=bg.型号 and abc.日期=bg.生产日期) abcg left join (select 型号,销售日期,SUM(销售数量) AS 销售数量 from [表C$] group by 型号,销售日期) cg on abcg.型号=cg.型号 and abcg.日期=cg.销售日期 order by abc.型号,abc.日期
第3个回答  2012-03-08
Select
A.型号,A.阶段,
B.生产日期,生产型号=B.型号,B.生产数,
B.不良数,
C.销售日期,销售型号=C.型号,C.销售数量
From 表A A,
(Select 生产日期,型号,
生产数=Sum(生产数),不良数=Sum(不良数) From 表B
Group By 生产日期,型号
)B,
(Select 销售日期,型号,
销售数量=Sum(销售数量) From 表C
Group By 销售日期,型号
)C
Where A.型号 = B.型号 And A.型号=C.型号本回答被网友采纳
相似回答