热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用聚合函数和SQL语句完成多工作表的汇总查询

利用聚合函数和SQL语句完

蓝字关注,NZ9668获资料信息


 《VBA代码解决方案》系列书作者

头条百家平台 VBA资深创作者

_______________________________


 

大家好,我们继续VBA数据库解决方案的学习,今天讲解第51讲:利用聚合函数和SQL语句完成多工作表的汇总查询计算。今日的内容看似简单,其实有些难度,希望大家不要放弃,在自己测试的时候要多测试几次。虽然本讲的内容可利用其他的方法也可以实现,但这种方法也不失为一种解决问题的有效手段。

在我的系列书籍中一直在强调“搭积木”的编程思路,主要的内涵:首先是代码不要自己全部的录入,你要做的是把积木放在合适的位置让后去修正代码,其次是建立自己的“积木库”,把自己认为有用的代码放在一起,可以随时利用。你的积木库资料越多,你做程序的思路就会越多。数据库的代码录入更是如此,代码往往很长,千万不要自己去录入。空格,引号,逗号的写法要求是非常严格的。一定要拷贝,然后修正代码,把时间利用到高效的思考上。

今日的内容是讲聚合函数和SQL的结合,从而完成我们的实际工作。如下的实例:我的工作表中有两页格式接近的数据,如下: 

  现在我要把两个工作表的数据提取型号,数量,单价,并把数量按型号汇总,汇总后的数据按型号排序处理。

上面的例子,如果在EXCEL工作表文件中处理要多个步骤来完成,用数据库的一般方案也是比较麻烦的,下面看我们聚合函数的功效吧。

我给出的代码如下;

Sub mynzRecords_51() '51  利用聚合函数和SQL语句完成多工作表的汇总查询计算

 DimcnADO, rsADO As Object

   Dim strPath, strSQL1, strSQL2, strSQL3, strSQL4 As String

   Worksheets("51").Select

   Cells.ClearContents

   Set cnADO = CreateObject("ADODB.Connection")

   Set rsADO = CreateObject("ADODB.Recordset")

    '建立一个ADO的连接

    strPath = ThisWorkbook.FullName

    cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extendedproperties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

    strSQL1 = "select 型号,数量,单价 from [数据$]"

    strSQL2 = "select 型号,数量,单价 from [数据2$]"

    strSQL3 = strSQL1 & " UNION ALL " & strSQL2

    strSQL4 = "select 型号,SUM(数量),单价 from (" & strSQL3 &") GROUP BY 型号,单价"

     arr = Array("型号", "数量", "单价")

    [a1:c1] = arr

    [a65536].End(xlUp).Offset(1, 0).CopyFromRecordset cnADO.Execute(strSQL4)

   cnADO.Close

   Set cnADO = Nothing

   Set rsADO = Nothing

  End Sub

代码截图:


代码讲解:

1   strSQL1 = "select 型号,数量,单价 from [数据$]" 第一个SQL语句完成“数据”工作表的数据提取。

 2  strSQL2 = "select 型号,数量,单价 from [数据2$]" 第二个SQL语句完成“数据2”工作表的数据提取。

 3  strSQL3 = strSQL1 & " UNION ALL" & strSQL2 第三个SQL语句完成strSQL1strSQL2的组合,这里利用到了聚合函数UNION,此函数的用法大家要注意,按照我给出的代码示例进行即可。

 4  strSQL4 = "select 型号,SUM(数量),单价 from (" & strSQL3 & ") GROUP BY 型号,单价"

第四个SQL语句,通过上面的聚合函数建立一个新的SQL查询。同样这个语句的写法要注意按照我的示例格式进行,不要另辟蹊径,通不过的。

下面看我们代码的运行结果:


今日内容回向:

聚合函数在sql中如何应用?

如何利用聚合函数完成数据的统计?


_____________________________


觉得有启发,点个“在看”,转给朋友们

欢迎你“留言”,和作者直接交流

 

更多关联阅读





  





推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
author-avatar
心醉逸轩_620
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有