ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 各位大神,求助一句SQL语句

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-26 19:19 | 显示全部楼层 |阅读模式


各位大神,想求助一句SQL语句,同时计算日均和月均数。

我的水平有限,只能同时计算其中一项。

不用VBA,用VBA我还是能搞定的。

1.jpg

2.jpg

想实现的效果(只能用一句SQL):

sq.jpg


代码如下,方便不想下载附件就能看到:

3.png

SQL求助.zip (72 KB, 下载次数: 27)

TA的精华主题

TA的得分主题

发表于 2018-5-26 20:17 来自手机 | 显示全部楼层
为啥要这样啊,只能一句sql?

TA的精华主题

TA的得分主题

发表于 2018-5-26 20:22 来自手机 | 显示全部楼层
把这二句再join一下,感觉。。。,数据这么多还是存在access里用access处理,还可以用查询设计视图。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-26 21:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ivccav 于 2018-5-26 21:39 编辑
zpy2 发表于 2018-5-26 20:22
把这二句再join一下,感觉。。。,数据这么多还是存在access里用access处理,还可以用查询设计视图。

数据是放在数据库里面的,为了传附件方便才做到EXCEL里面。

只要加几句VBA就可以在合计列后面插入一列求得月平均。

还可以在Recordset里面构造一列求月均值,都比较简单。

我只是想怎么用一句SQL实现这个效果。Transform语句挺好用的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-28 08:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-12-9 12:42 | 显示全部楼层
这样应该可以
  1. t = "(select 工号,姓名,部门,sum(合计) as 合计,count(FORMAT(日期,""YYYY年MM月"")) AS 数量,FORMAT(日期,""YYYY年MM月"") AS 日期 from [salary$] group by FORMAT(日期,""YYYY年MM月""),工号,姓名,部门) as a"
  2.     Sql = "transform sum(合计) select 工号,姓名,部门,SUM(合计) AS 合计,ROUND(AVG(合计),2) as 月均,ROUND(SUM(合计)/SUM(数量),2) as 日均 from " & t & " group by 工号,姓名,部门 pivot 日期"
复制代码


没有加小计

给楼主的分享帖点赞

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-12-9 13:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
as a 可以去掉
原本想用左连接的所以有 as a,但没弄出来,有transform语句后左连接不知道为什么总是报错。

TA的精华主题

TA的得分主题

发表于 2018-12-9 13:23 | 显示全部楼层
还有 FORMAT(日期,""YYYY年MM月"") ,好像FORMAT(日期,'YYYY年MM月')更清晰。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-9 16:51 | 显示全部楼层

版主,您好!
加小计之后提示Join错误,我研究不出是什么问题。能看看吗?


QQ图片20181209164325.png

SQL求助.zip (83.23 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

发表于 2018-12-9 20:02 | 显示全部楼层
  1. t1 = "select 工号,姓名,部门,FORMAT(日期,'YYYY年MM月') AS 日期,合计 from [salary$] UNION ALL select NULL as 工号,NULL as 姓名,部门&'小计' as 部门,FORMAT(日期,'YYYY年MM月') as 日期,sum(合计) as 合计 from [salary$] group by 部门,日期,FORMAT(日期,'YYYY年MM月')"
  2. t2 = "select 工号,姓名,部门,sum(合计) as 合计,count(FORMAT(日期,'YYYY年MM月')) AS 数量,FORMAT(日期,'YYYY年MM月') AS 日期 from (" & t1 & ") group by FORMAT(日期,'YYYY年MM月'),工号,姓名,部门"
  3. Sql = "transform sum(合计) select 工号,姓名,部门,SUM(合计) AS 合计,ROUND(AVG(合计),2) as 月均,ROUND(SUM(合计)/SUM(数量),2) as 日均 from (" & t2 & ") group by 工号,姓名,部门 ORDER BY 部门 pivot 日期"
复制代码


我这样写实现了,效率咋样不知道。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 07:42 , Processed in 0.036733 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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