ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请老师解析SQL语句

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-8-17 08:43 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
《EXCEL 2010 SQL完全应用》疑难97例子。如附件和图片
要求:“销售表”,对商品编码相同的销售额进行累计,结果如”结果表“
SQL语句如下。请老师解析下,门店<= '" & 门店 & "',书上解释为因为需要累计,构造了”商品编码字段必须等于原来的商品编码字段,并且前一个门店的累计少于下一个门店的累计“的条件。“商品编码字段必须等于原来的商品编码字段”这部分易于理解,但”前一个门店的累计少于下一个门店的累计“就不好理解了。因为门店字段为文本类型,其指向的数据是各个门店而非数字,怎么可以以”<=“构造呢?
  1. SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 门店<= '" & 门店 & "'") AS 累计销售额
  2. FROM [销售表$]
  3. ORDER BY 商品编码, 门店
复制代码
销售表.png
结果表.png

疑难97.zip

12.73 KB, 下载次数: 19

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 08:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
按我的理解SQL语句应该为
  1. SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 销售额<= " & 销售额 & "") AS 累计销售额
  2. FROM [销售表$]
  3. ORDER BY 商品编码, 门店
复制代码


但结果却是如下图,明显结果不对。
结果表二.png

TA的精华主题

TA的得分主题

发表于 2017-8-17 09:06 | 显示全部楼层
autumnalRain 发表于 2017-8-17 08:48
按我的理解SQL语句应该为

但结果却是如下图,明显结果不对。

QQ截图20170817090338.png

SQL语句也是循环遍历,如A001为例子,你遍历其所有数据

找出销售额小于等于3450的,然后求和就等于7330.
至于说的文本,既然能排序,为什么就不能比较大小呢?
要知道汉字也有大有小啊。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 09:28 | 显示全部楼层
jiangxiaoyun 发表于 2017-8-17 09:06
SQL语句也是循环遍历,如A001为例子,你遍历其所有数据

找出销售额小于等于3450的,然后求和就等 ...

要求是:上一个门店的累计额小于下一个门店的累计额,按书上看,结果表“累计销售额”栏,顺序肯定是同一商品编码下面的行累计数大于上面的行累计数

TA的精华主题

TA的得分主题

发表于 2017-8-17 09:32 | 显示全部楼层
本帖最后由 jiangxiaoyun 于 2017-8-17 09:40 编辑
autumnalRain 发表于 2017-8-17 09:28
要求是:上一个门店的累计额小于下一个门店的累计额,按书上看,结果表“累计销售额”栏,顺序肯定是同一 ...

SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 销售额<= " & 销售额 & "") AS 累计销售额  FROM [销售表$]  ORDER BY 商品编码, 销售额

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 09:40 | 显示全部楼层
  1. SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 销售额<= " & 销售额 & "") AS 累计销售额
  2. FROM [销售表$]
  3. ORDER BY 商品编码,销售额,门店
复制代码
这个结果倒也算正确,只是和原书的顺序有不同
结果表三.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 09:44 | 显示全部楼层
本帖最后由 autumnalRain 于 2017-8-17 11:57 编辑
jiangxiaoyun 发表于 2017-8-17 09:32
SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 销售额

这样的话就好理解了。但书上代码确实能得到正确结果,怎么构造的?

********************************************************************************************************************************************************
"商品编码= '" & 商品编码 & "' AND 门店<= '" & 门店 & "'

书上解释为:因为需要累计,构造了”商品编码字段必须等于原来的商品编码字段,并且前一个门店的累计少于下一个门店的累计“的条件

门店<= '" & 门店 & "'怎么就能构造出前一个门店的累计少于下一个门店的累计





TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 10:00 | 显示全部楼层
从结果表看,门店<= '" & 门店 & "'相当于构造了”前一个门店的累计少于下一个门店的累计“这句不好理解。但确实是正确的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 13:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 autumnalRain 于 2017-8-17 14:00 编辑

正确代码形成结果见“累计表”
  1. SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 门店<= '" & 门店 & "'") AS 累计销售额
  2. FROM [销售表$]
  3. ORDER BY 商品编码, 门店
复制代码

6楼错误代码见“错误结果表”

  1. SELECT 门店, 商品编码, 销售额, DSUM("销售额","销售表$","商品编码= '" & 商品编码 & "' AND 销售额<= " & 销售额 & "") AS 累计销售额
  2. FROM [销售表$]
  3. ORDER BY 商品编码,销售额,门店
复制代码








累计表.png
错误结果表.png

疑难97.zip

12.79 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-17 14:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这里还有一个一样的求助贴,但也是没有得到解答……

http://club.excelhome.net/thread-1193912-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 19:29 , Processed in 0.048468 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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