ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] access中sql简单查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-18 13:47 | 显示全部楼层 |阅读模式
本帖最后由 qldd2200 于 2018-4-18 13:54 编辑

各位老师:想在查询表中加入两列,“其中承兑”、“承兑比例”:“其中承兑”(总金额)为回款明细表中的结算方式中的承兑,“承兑比例”为回款明细中的承兑总额/回款总额,按分厂,业务员,单位区分,谢谢各位老师!!!

表.rar

22.38 KB, 下载次数: 27

TA的精华主题

TA的得分主题

发表于 2018-4-18 14:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
子查询C中并没有[承兑]这个字段,所以在主查询中的Sum(c.承兑)出现错误。
我对“承兑”这个概念不熟悉,不知道如果计算。单纯从SQL来说,你的SQL语句除了上面的错误,还有就是主查询中的“比例 AS 承兑比例”。[比例]这个字段也是不存在的,所以也是错误。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-18 14:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老师,是的,还请您补充完整,sum承兑,和承兑比例是想实现的目标,这句不知道应该如何写,还请您指教
,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-18 14:43 | 显示全部楼层
原表中没有“其中承兑”列和“承兑比例”列,就是想建立这两列,不会写

TA的精华主题

TA的得分主题

发表于 2018-4-18 23:56 | 显示全部楼层
首先,你说 “ “其中承兑”(总金额)为回款明细表中的结算方式中的承兑 ”,问题是,回款明细表中,虽然有[结算方式]这个字段,但是它的承兑是怎么计算出来的?这个需要说明一下。
其次,你说“ “承兑比例”为回款明细中的承兑总额/回款总额 ”。但是回款明细表中根本就没有[承兑总额]和[回款总额]这两个字段。所以你先要告诉我,这两个字段是哪里来的?
在不清楚你上面的问题的基础上,下面是我自己的理解:
1)“其中承兑”就是回款明细表中,[结算方式]为“承兑”的相关记录的[回款金额]的总和。(这个总和,也是按照[业务员]、[购货单位]和[执行分厂]进行分组)
2)“承兑比例”就是回款明细表中,按照[业务员]、[购货单位]和[执行分厂]进行分组,然后把[结算方式]为“承兑”的[回款金额]进行汇总(也就是你说的“其中承兑”),除以所有[回款金额]总和的比例。
在我的理解的基础上,这个查询应该是这么做的:(显然,这样子一来,就跟“发货明细”这个表没有关系了,所以你原来的查询中的UNION子查询是多余的)
SELECT A.业务员, A.结算方式, A.执行分厂, A.其中承兑, B.回款总额, A.其中承兑/B.回款总额 AS 承兑比例
FROM (SELECT 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, Sum(回款明细.回款金额) AS 其中承兑 FROM 回款明细 WHERE 回款明细.结算方式="承兑" GROUP BY 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂) AS A INNER JOIN (SELECT 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, Sum(回款明细.回款金额) AS 回款总额 FROM 回款明细 GROUP BY 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂) AS B ON A.执行分厂 = B.执行分厂 AND A.结算方式 = B.结算方式 AND A.业务员 = B.业务员;



这个查询只会显示[结算方式]为“承兑”的记录。如果你需要显示所有的[结算方式],可以使用下面的查询:

SELECT B.业务员, B.结算方式, B.执行分厂, A.其中承兑, B.回款总额, A.其中承兑/B.回款总额 AS 承兑比例
FROM (SELECT 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, NZ(Sum(回款明细.回款金额),0) AS 其中承兑 FROM 回款明细 WHERE 回款明细.结算方式="承兑" GROUP BY 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂) AS A RIGHT JOIN (SELECT 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, Sum(回款明细.回款金额) AS 回款总额 FROM 回款明细 GROUP BY 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂) AS B ON A.执行分厂 = B.执行分厂 AND A.结算方式 = B.结算方式 AND A.业务员 = B.业务员;


测试的话,请在你原来的Access数据库中,新建一个查询,然后复制粘贴上面蓝色字体的SQL语句就可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-19 08:07 | 显示全部楼层
siliconxu 发表于 2018-4-18 23:56
首先,你说 “ “其中承兑”(总金额)为回款明细表中的结算方式中的承兑 ”,问题是,回款明细表中,虽然 ...

谢谢老师耐心细致的执导,是我没有说明白,查询表中要求有分厂,业务员,购货单位,发货金额,回款金额,其中承兑,承兑比例这7列,就是统计每个分厂,业务员,下面的每个客户的发货金额,回款金额,承兑金额和承兑比例,主要是以客户为基准的发货,回款和承兑,其中承兑指的是客户的结算方式为承兑的金额,承兑比例为客户的结算方式为承兑的金额除以客户的回款金额(每个客户会有多笔),以%表示,该如何写呢?谢谢老师!!!

TA的精华主题

TA的得分主题

发表于 2018-4-19 09:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如果是这样子的话,我觉得我之前的理解好像是正确的。你有没有试一下我的查询,看结果是不是正确的?
当然,结果少了“发货金额”,因为这个是从另外的表来的。但是如果我的结果是正确的,我们再讨论怎么去添加“发货金额”的问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-19 09:54 | 显示全部楼层
本帖最后由 qldd2200 于 2018-4-19 09:56 编辑

谢谢老师,结果有些出入,业务员下还有客户,要求以分厂,业务员,客户分类,求每个客户发货总金额,回款总金额,承兑总金额,承兑比例,谢谢老师!!

TA的精华主题

TA的得分主题

发表于 2018-4-19 10:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这样子呢?

SELECT A.业务员, A.结算方式, A.执行分厂, A.购货单位, A.其中承兑, B.回款总额, A.其中承兑/B.回款总额 AS 承兑比例
FROM (SELECT 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, 回款明细.购货单位, Sum(回款明细.回款金额) AS 其中承兑 FROM 回款明细 WHERE 回款明细.结算方式="承兑" GROUP BY 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, 回款明细.购货单位) AS A INNER JOIN (SELECT 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, 回款明细.购货单位, Sum(回款明细.回款金额) AS 回款总额 FROM 回款明细 GROUP BY 回款明细.业务员, 回款明细.结算方式, 回款明细.执行分厂, 回款明细.购货单位) AS B ON A.执行分厂 = B.执行分厂 AND A.结算方式 = B.结算方式 AND A.业务员 = B.业务员 AND A.购货单位=B.购货单位;


如果还是错误,请把你需要达到的结果做成表格我看一下(根据你数据库的现有数据)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-19 10:14 | 显示全部楼层
老师,要求保留所有数据,(结算方式不为承兑的也保留)
微信截图_20180419101430.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-24 16:01 , Processed in 0.050645 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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