暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA+ADO处理数据时最常用的SQL语句

米宏Office 2022-11-23
205

我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office软件为其服务。支持我,也为自己加油!


最近连续碰到的几位客户都有同样的需求,从系统中导出的数据源比较大,或者是经年累月数据量越来越大,呈现给上级的报表不需要包括数据源,只需要结果报表即可,公司对数据管理管理方面并未采用数据库,或者是采用了数据库,但不是所有人都会查询语言,都是从数据库里导出最全的数据然后利用Excel去分析。

遇到这种情况,如果想做一个自动报表的模板,采取VBA+ADO技术无疑是一种好办法,所以我们很有必要学习下这门技术,基本原理我就不讲了,大家可以参照:
SQL for Excel自学教程

今天分享下最近解决问题时常用的几个SQL语句:

数据源结构如下(真实数据源有很多列,此处经过简化):


1、查询不重复的客户编码记录
select distinct(客户编码) from [订单表$]
2、求客户编码记录条数
select count(客户编码) as 客户编码条数 from [订单表$]
3、求不重复的客户编码条数
select count(客户编码) as 客户编码数量 from (select distinct(客户编码) from [订单表$])
4、汇总每个客户编码相同日期的订单金额
select 客户编码,left(订单时间,10) as 时间,sum(订单金额) as 订单金额 from [订单表$] group by 客户编码,left(订单时间,10)
5、求每个客户编码对应的日期的订单笔数
select 客户编码,left(订单时间,10) as 时间,count(客户编码) as 订单笔数 from [订单表$] group by 客户编码,left(订单时间,10)
6、求每个客户编码对应的日期的订单笔数,排除客户编码以为”AC“开头的客户编码
select 客户编码,left(订单时间,10) as 时间,count(客户编码) as 订单笔数 from [订单表$] where 客户编码 not like 'AC%'group by 客户编码,left(订单时间,10)
7、求每个客户编码对应的日期的订单笔数,日期横着放
transform count(客户编码) select 客户编码 from [订单表$] group by 客户编码 pivot left(订单时间,10)
在Excel中练习时大家完全可以自己设置一个模板,直接写SQL语句运行即可,如下:


本节先分享到这里,祝大家每天都有进步。

↙点击“阅读原文”系统学习Office知识!

文章转载自米宏Office,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论