ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6645|回复: 10

[求助] ACCESS 多表汇总求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-4 11:22 | 显示全部楼层 |阅读模式
QQ图片20150104103022.jpg QQ图片20150104103112.jpg
QQ图片20150104105656.jpg

ACCESS 有两个表 我要根据 “外发数据”里面的字段“发货单号”、“模具编号”、“颜色”,求“交回数据”里的“数量”的和,并把相关字段列出来,
单一个表的查找我写出来了,跨表求和这里,不知道怎么写老是出错,求老师教一下,
数据.rar (43.4 KB, 下载次数: 53)

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-4 11:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-1-4 12:10 | 显示全部楼层
没有理解"求“交回数据”里的“数量”的和,并把相关字段列出来"的意思.看看是不是这样?
SELECT 外发数据.[日期], 外发数据.[供应商], 外发数据.[发货单号], 外发数据.[订单号], 外发数据.[模具编号], 外发数据.[名称], 外发数据.[颜色], 外发数据.[数量], 交回数据.数量
FROM 交回数据 INNER JOIN 外发数据 ON (交回数据.颜色 = 外发数据.颜色) AND (交回数据.模具编号 = 外发数据.模具编号) AND (交回数据.发货单号 = 外发数据.发货单号);

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-4 12:20 | 显示全部楼层
zez 发表于 2015-1-4 12:10
没有理解"求“交回数据”里的“数量”的和,并把相关字段列出来"的意思.看看是不是这样?
SELECT 外发数据. ...

交回数据.数量 要求和的  
也就是说同一批货发出去 可能会分几次交回来 所以要求和的

TA的精华主题

TA的得分主题

发表于 2015-1-4 12:34 | 显示全部楼层
若思泪 发表于 2015-1-4 12:20
交回数据.数量 要求和的  
也就是说同一批货发出去 可能会分几次交回来 所以要求和的

    SQLA = "select 日期,供应商,发货单号,订单号,模具编号,名称,颜色,数量 from 外发数据 where 供应商='" & Sheets("报表二").Range("D2").Value & "' and 日期>=#" & Sheets("报表二").Range("B2").Value & "# and 日期<=#" & Sheets("报表二").Range("C2").Value & "#"
    SQLB = "select 发货单号,模具编号,颜色,sum(数量) as 交回数量 from 交回数据 group by 发货单号,模具编号,颜色"
   
    SQL = "select A.*,B.交回数量 from (" & SQLA & ") A LEFT JOIN (" & SQLB & ") B ON A.发货单号=B.发货单号 and A.模具编号=B.模具编号 and A.颜色=B.颜色"

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-4 13:39 | 显示全部楼层
原来是这样子啊 我都是下载例子 自己摸索代码学习的 好多东西都不会运用 谢谢老师

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-4 15:40 | 显示全部楼层
sz_wap 发表于 2015-1-4 12:34
SQLA = "select 日期,供应商,发货单号,订单号,模具编号,名称,颜色,数量 from 外发数据 where 供应商= ...

老师 根据你这方法还有其他例子, 我又做了一个三个表的汇总求和,可是提示语法错误,随便去掉一个表都能运行  请问是哪里错了

    SQLA = "select 供应商,模具编号,颜色,SUM(数量) as 发货数量 from 外发数据 where 日期>=#" & Sheets("报表一").Range("B2").Value & "# and 日期<=#" & Sheets("报表一").Range("C2").Value & "# group by 供应商,模具编号,颜色"
   
    SQLB = "select 供应商,模具编号,颜色,sum(数量) as 交回数量 from 交回数据 where 日期>=#" & Sheets("报表一").Range("B2").Value & "# and 日期<=#" & Sheets("报表一").Range("C2").Value & "# group by 供应商,模具编号,颜色"
     
    SQLC = "select 供应商,模具编号,颜色,sum(数量) as 退货数量 from 不良数据 where 日期>=#" & Sheets("报表一").Range("B2").Value & "# and 日期<=#" & Sheets("报表一").Range("C2").Value & "# group by 供应商,模具编号,颜色"
   
    SQL = "select A.*,B.交回数量,C.退货数量 from (" & SQLA & ") A LEFT JOIN (" & SQLB & ") B ON A.供应商=B.供应商 and A.模具编号=B.模具编号 and A.颜色=B.颜色 LEFT JOIN (" & SQLC & ") C ON A.供应商=C.供应商 and A.模具编号=C.模具编号 and A.颜色=C.颜色"

TA的精华主题

TA的得分主题

发表于 2015-1-4 16:11 | 显示全部楼层
VBA里似乎不能使用并列的Join
用嵌套变通一下,形式如:
select A.?,B.?,C.? from (A.?,B.? from tabl1 A left join table2 B on A.?=B.?) left join table3 C on A.?=C.?

所以试试:
SQL = "select A.*,B.交回数量,C.退货数量 from ((" & SQLA & ") A LEFT JOIN (" & SQLB & ") B ON A.供应商=B.供应商 and A.模具编号=B.模具编号 and A.颜色=B.颜色) LEFT JOIN (" & SQLC & ") C ON A.供应商=C.供应商 and A.模具编号=C.模具编号 and A.颜色=C.颜色"

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-4 17:44 | 显示全部楼层
sz_wap 发表于 2015-1-4 16:11
VBA里似乎不能使用并列的Join
用嵌套变通一下,形式如:
select A.?,B.?,C.? from (A.?,B.? from tabl1 A ...

加个括号  可以了  谢谢

TA的精华主题

TA的得分主题

发表于 2019-2-16 23:18 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 21:33 , Processed in 0.052237 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表