ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何用SQL语句生成已知日累积销量,求日销量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-24 12:59 | 显示全部楼层 |阅读模式
现手头上有手工收集的数据一份,每日更新(周末会有中断),需要根据收集到的数据中的日累积销量,求出日销量,方便后期数据透视表使用,因为在数据透视表中用差异-与上一个差异比较,有些缺陷
本人数据中途有可能间断,即22数据跳到24号,23号无数据,现想达到的是24号数据是(24号累积-22号累积)/2的效果,用公式可以求出来,但每次排序、更改公式太麻烦,烦请大侠帮忙看用sql语句写一下,sql语句本人只懂简单的,像这个复杂需求就不会了。 知道日累积销量求日销量.zip (136.52 KB, 下载次数: 17)

TA的精华主题

TA的得分主题

发表于 2012-11-25 08:35 | 显示全部楼层
[code=sql]select a.*,a.日累积销量-b.日累积销量 as 日销量
from [sheet1$a:h]a
inner join [sheet1$a:h]b
on a.商品id = b.商品id
and a.日期=b.日期+1[/code]

TA的精华主题

TA的得分主题

发表于 2012-11-25 08:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 amazeyeli 于 2012-11-25 10:08 编辑

select a.*,a.日累积销量-b.日累积销量 as 日销量
from [sheet1$]a
inner join [sheet1$]b
on a.商品id=b.商品id
and a.日期=b.日期+1
union all
select a.*,(a.日累积销量-b.日累积销量)/2 as 日销量
from [sheet1$]a
inner join [sheet1$]b
on a.商品id=b.商品id
and a.日期=b.日期+2
and a.日期 not in
(
        select a.日期
        from [sheet1$]a
        inner join [sheet1$]b
        on a.商品id=b.商品id
        and a.日期=b.日期+1
)

在数据库里测试了下语句可行
在Excel中却不行,我对于()怎么去加真迷糊

TA的精华主题

TA的得分主题

发表于 2012-11-25 10:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-26 11:53 | 显示全部楼层
amazeyeli 发表于 2012-11-25 08:44
select a.*,a.日累积销量-b.日累积销量 as 日销量
from [sheet1$]a
inner join [sheet1$]b

读了您的代码,大概意思是否是两个日期间隔1天的数据union all 间隔两天的日期,假如隔3天的日期就不能成立??好像通用性不强啊,不过同样非常感谢你的辛劳,相信也测试了很长时间。我在excel上写sql也是很痛苦,又没有错误提示,对我这种粗心的人来说实在是万分痛苦。

TA的精华主题

TA的得分主题

发表于 2012-11-26 12:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. SELECT T1.日期,T1.时间,T1.标题,T1.链接,T1.店铺,T1.日累积销量,T1.评价数,T1.商品ID,IIF(T2.日累积销量,(T1.日累积销量-T2.日累积销量)/(T1.日期-T2.日期),0) AS 日销量 FROM
  2. (SELECT A.日期,A.时间,A.标题,A.链接,A.店铺,A.日累积销量,A.评价数,A.商品ID,SUM(1) AS 序列 FROM [Sheet1$]A,[Sheet1$]B where A.商品ID=B.商品ID AND A.日期>=B.日期 GROUP BY A.日期,A.时间,A.标题,A.链接,A.店铺,A.日累积销量,A.评价数,A.商品ID)T1
  3. LEFT JOIN
  4. (SELECT A.日期,A.时间,A.标题,A.链接,A.店铺,A.日累积销量,A.评价数,A.商品ID,SUM(1) AS 序列 FROM [Sheet1$]A,[Sheet1$]B where A.商品ID=B.商品ID AND A.日期>=B.日期 GROUP BY A.日期,A.时间,A.标题,A.链接,A.店铺,A.日累积销量,A.评价数,A.商品ID)T2
  5. ON T1.商品ID=T2.商品ID AND T1.序列=T2.序列+1
复制代码

TA的精华主题

TA的得分主题

发表于 2012-11-26 12:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-27 19:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wuxiang_123 发表于 2012-11-26 12:36

托版主的福,可以实现了,省下了很多纠结的岁月,再问一下版主那个group by 部分是否可以减少一些的?如我的表用日期,商品id 就可以做成组合主键惟一性,是否group by 日期,商品id就可以,还是要罗列所有字段?sum(1)是求日期项的值吗?我的表结构是否group by只有一行数据?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-7 06:18 , Processed in 0.025521 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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