
本书是“Excel疑难千寻千解”丛书之一,为读者展示了在Excel 2010中运用SQL语句解决疑难问题的实战技巧。本书包含SQL基础入门、运算符、常用函数、日期、排序、聚合函数、连接查询、子查询、SQL与数据透视表、SQL与VBA等方面的应用技巧,以及SQL语句的综合应用。 本书非常全面地阐述了SQL语言在Excel中的应用,SQL语法介绍具体全面,案例贴近实际,讲解深入透彻,帮助读者更加深入了解SQL语言,同时也揭开了SQL语言在Excel中使用的神秘面纱。 读者对象:本书包括200个疑难案例,每个疑难都包含一个或多个解决方案,并融入了一个或多个知识点的讲解。在解决问题的同时,引导读者学习Excel 2010中SQL应用的原理和扩展知识。书中还介绍了SQL的部分通用语句,读者可以直接应用于实际工作中。阅读本书后,不仅有助于提升读者在SQL运用方面的理论水平和综合实战能力,还有助于解决读者在实际工作中可能出现的诸多难题,提高工作效率。
序 一 Excel是微软公司Office产品家族的一员,是一款功能强大、操作便捷且支持二次开发的制表软件,也是微软办公套装软件的一个重要组成部分。早在1987年第一款适用于Windows系统的Excel问世之初,它就超越了同类表格软件,至10年后发布Excel 97开始,Excel已经被广泛地应用于企事业管理、数据统计和财务金融等众多领域。 随着Excel 2010上市,我们迫切地需要能够全面解读Excel 2010的书籍来满足用户需求,帮助他们尽快了解基本功能、掌握应用技巧,从而更加高效地完成工作、学习及各专业领域中的应用。很开心看到“Excel疑难千寻千解丛书”的出版,目前出版的《Excel 2010操作与技巧》、《Excel 2010函数与公式》 到《Excel VBA编程与实践》、《Excel 2010 SQL完全应用》等读本,以各自不同的侧重面展示了Excel 2010的诸多应用技巧,同时,也让人十分期待丛书其他读本的面市。 此系列丛书由多位微软最有价值专家(MVP)和Excel技巧网的版主参与撰写,他们凭借着出众的Excel技术水平,以及乐于奉献的无私精神,长期在Excel技巧网以及微软Office技术社区孜孜不倦地帮助用户解决技术难题,积累了丰富的疑难处理经验和写作经验,为写作本丛书奠定了基石。 微软最有价值专家 (MVP) 是指具备一种或多种微软技术专业知识,并且积极参与在线或离线的社群活动,经常与其他专业人士分享知识和专业技能,受人尊敬、信任,而且平易近人的专家。他们是一群拥有丰富知识和实际经验的微软技术专家,他们不是微软的员工,但是非常乐于通过在线或离线社区的方式帮助他人。MVP项目主要目的在于鼓励形成一个充满活力的全球性社群,使得微软和用户之间建立良好的互动关系、增进相互了解,鼓励更多的社区专家深入到社区中帮助用户解决技术问题。 正由于以微软MVP为首的一群技术专家在Office技术社区的不断贡献,让我们看到了“Excel疑难千寻千解丛书”的出版。这是一套源自于技术讨论社区的书籍,这是一套打破传统模式而以发现问题、解决问题为本的书籍,这是一套汇集了社区专家智慧的书籍,这是一套让你看了爱不释手的书籍,这是一套快速帮您解决Excel技术问题的书籍。 立身以立学为先,立学以读书为本,与大家共勉之,希望大家通过阅读这套丛书而多多受益。 微软社区项目经理 林思绮 序 二 与黄朝阳和 Excel 技巧网(http://www.exceltip.net)技术社区是在年初透过微软社区精英计划而结识的。微软社区精英计划是微软为了协助国内在技术社区上有一定影响力的社区或个人,或是愿意为国内信息技术做出贡献的社区或个人而设立的培训与支持计划,同时也是配合国家培育人才的政策而成立的。很高兴能看到朝阳与 Excel 技巧网能将这些有用的信息集结成书,让更多的国人受惠。也很开心看到微软社区精英计划里的社区组织与意见领袖们能有此成就。 下面有4个如果,如果您正好符合其中一个,您可以考虑在书店里找个安静的角落享受一下,或者是带回家仔细品尝。 如果您还认为 Excel 只是一个试算表或是办公室软件,那么我会建议您阅读此书,让您将 Excel的价值提升到另一个高度。 如果您是长期使用 Excel 的老手,应该不难发现 Excel 已不再是试算表的概念。经过微软研发团队多年来不断的收集与汇总用户反馈后,集成了中小型企业以及大型企业乃至于个人使用者的不同需求,并将商业智能(Business Intelligence)巧妙地揉进里面,透过此书,希望您能发现更多 Excel 的应用技巧,提高您的使用技能。 如果您是使用 Excel 的专家,也许这些通用型功能还不足以满足您的需求,您还可以通过使用VBA (Visual Basic for Application) 来刻画出自定义的函数、自动化的流程等特定功能来满足不同的需求,透过 VBA 分册,希望您能发现更多 VBA 的秘密,让VBA成为您得力的助手。 如果您在寻找不同场景或是产业链中 Excel 所扮演的角色,我希望这本书中的案例与实战能帮到您,希望您能将这些案例与实战应用于您具体的场景或产业链中。 开卷有益,开卷有得,每个人读书所获得的都不一样,只要打开书本读书,总是有好处的。读书即未成名,终究人品高雅——与君共勉之。 微软(中国)市场经理 廖浩志 前 言 感谢您选择“Excel 疑难千寻千解”丛书之《Excel 2010 SQL 完全应用》! Excel 2010具有强大的运算与分析能力。从Excel 2007开始,改进的功能区使操作更直观、更快捷,实现了质的飞跃。不过需要进一步提升效率、实现自动化,单靠功能区的菜单功能是远远不够的。在Excel中使用SQL语句,可以灵活地对数据进行整理、计算、汇总、查询、分析等处理,尤其在面对大数据量的工作表的时候,SQL语言能够发挥其更大的威力,快速提高读者的办公效率。 丛书介绍 “Excel 疑难千寻千解”丛书是由Excel技巧网(ExcelTip.Net技术社区)的负责人、微软最有价值专家(MVP)黄朝阳先生策划并组织编写的一套系列书籍。 Excel技巧网旨在重点推广Excel 2010及今后更高版本的应用,并为广大的Excel爱好者提供一个内容充实、分类清晰、经典实用、精彩纷呈、互惠学习、友好交流的平台。社区成立不久便吸引了众多微软MVP和有志于推广电子表格应用技术的高手驻足,长期为网友免费解答疑难问题,并勤于将精彩的答疑帖子按其所涉及的知识和应用两个维度,整理成为原创技术文章。 社区设有讨论、文章、资源三大技术专区,并按照Excel的功能归属将主题划分为基础应用、数据透视表、条件格式、函数与公式、图表与图形、VBA、SQL in Excel、综合应用等方面,本丛书的各读本正是基于相近的主题分类。 本丛书由黄朝阳、王建发、陈国良等微软MVP以及罗刚君、荣胜军、李术彬、林盘生、陈树青、章兰新、李懿等多位社区资深版主联手打造,将来还将邀请更多高级会员加盟参与丛书其他读本的创作。其中《Excel 2010操作与技巧》、《Excel 2010函数与公式》、《Excel 2010 VBA编程与实践》已先于2010年12月出版,再次推出让读者们期待已久的《Excel 2010 SQL 完全应用》读本。近期,还将陆续推出《Excel 2010 数据透视表》、《Excel 2010 图表与图形》等其他读本。 得益于多年来在社区答疑中的磨砺,作者们将丰富的实战经验付诸笔端,精心设计了上千案例,将Excel方方面面的知识点融入其中。每个案例都采用一般用户遇到疑难时最可能的提问方式和应用场景对问题进行描述,提供具有针对性的解决方案和详尽的操作步骤,并配合以原理分析和知识扩展环节,既授人以鱼,又授人以渔。丛书全系提供“疑难”加“知识点”的特色目录索引,方便读者根据需要快速地查找。对于渴望学习和掌握新知识的Excel用户来说,与其千百次地找寻问题答案,不如静心地读此丛书一卷。 读者对象 本书的写作基于Microsoft Office Excel 2010专业版,尽管一些SQL语句可能在Excel97-2007等早期版本中不能直接使用,但依然能够为读者提供思路方面的借鉴。 本书通过200个疑难案例,其中包括了3个大型综合应用,展示了SQL语言在Excel中的高效应用,适合没有或者只有极少SQL语言使用经验的读者,同时也适合所有办公制表人士,特别是经常制作Excel财务报表、经营分析报表等人士,可借以大幅提升工作效率。本书提供的知识与疑难案例都是从最基础、最常见的问题开始阐述,并辅以解题思路与原理分析,读者可以通过书中现有的案例进行拓展,解决更多类似的问题。如果您是较少接触SQL语言的用户,可以参考本书案例中的疑难场景,直接编写相关的SQL语句在Excel中,只需要单击刷新,即可把相关的数据快速更新到您的表格中;如果您对SQL语言有了一定的了解,则可以通过学习本书案例中的解决方案,掌握更多知识点和使用技巧,全面地提升应用SQL语言解决实际工作问题的能力。 本书特点 本书为市场上第一本在Excel中完全应用SQL语言的Excel书籍,文体结构新颖,案例贴近实际,讲解深入透彻,表现为以下几个方面: 场景式提问 本书从成千上万网友提问中精心归纳、提炼出各类问题,并还原为贴近真实的求助语言及案例,方便读者搜寻与实际工作相似问题。 增强式目录 本书总体章节划分以“基础理论→分类应用→综合实战”为主线,将VBA的主要知识点和经典解决方案设计到每个疑难的案例中,并采用“疑难”加“知识点”的特色目录索引,方便读者根据需要翻阅和查找。 开创式结构 本书案例中的“解决方案”环节是对问题的思路解说,结合“操作方法”环节中的步骤让人更容易理解。“原理分析”环节则主要解释所使用代码的工作原理。“知识扩展”环节包括与案例相关的知识点补充,可拓展读者的视野,同时也有利于理解案例本身的解决思路。 学习方法 本书旨在让读者掌握运用SQL语句的基本操作、方法和技巧,用以解决实际工作中的疑难问题,以及对同类的问题提供解决思路。 书中各章节按由易到难的方式组织,但章节之间是相互独立的,可以从任意章节开始学习,不需要遵循由前至后的顺序阅读。 本书配套有示例文件光盘,读者必须把光盘的文件放置在D盘,然后边看书边操作,只有通过实践和不断尝试,才能真正地掌握和灵活地运用本书中的SQL语句的知识,也许可以写出比本书作者更好的SQL语句。 售后服务 本书由Excel技巧网(ExcelTip.Net技术社区)出品,读者在阅读中有任何疑难或者建议、BUG反馈等都可以到社区发贴,包括求助、交流,也可以在社区下载与本书相关的文档。社区为本丛书开辟了一个专门的版面用于编读往来,地址如下: http://www.exceltip.net/forum-75-1.html 同时本书也配备了专属的QQ群作为售后服务的联系方式,群号公布于上述网址,读者可以申请到群中与作者面对面交流。 致谢与作者 丛书从策划到出版,倾注了电子工业出版社计算机图书分社张慧敏、石倩、安娜等多位编辑近一年的心血,特在此表示衷心地感谢! 为保证丛书的质量,使其更贴近读者,我们组织了ExcelTip.Net的多位版主和高级会员参与了本书的预读工作,他们是梁薇薇、王士刚、张瑞芳、翁嘉辰、姚亮亮、任强、张伟、王洋、曾泽明、薛宇锋、程传魏和张敏。感谢各位预读员的辛勤、耐心与细致,使得本丛书能以更加完备的面目与各位读者见面。 感谢兄弟网站Excelpx.com与Officefans.net对本书的宣传工作给予的支持与帮助。 本书由黄朝阳策划,林盘生、李懿和陈树青编写。第1、第6~9章由林盘生编写,第2、5、10章由李懿编写,第3章由陈树青编写,第4章由陈树青和李懿共同编写,第11章由李懿和林盘生共同编写,最后由林盘生和黄朝阳完成统稿。 尽管作者对书中的案例精益求精,但疏漏仍然在所难免,如果您发现书中的错误或某个案例有更好的解决方案,敬请登录售后服务的网址向作者反馈。我们将尽快在社区回复,且在本书再次印刷时予以修正。 再次感谢您的支持! 编著者 2011年6月15日
目 录 第1章 SQL基础入 1 1.1 熟悉Excel的SQL语言编写环境 1 疑难1 如何获取外部源数据 1 ※ 通过OLE DB 接口获取外部数据源 2 ※ 使用Microsoft Query导入外部源数据 3 疑难2 如何刷新导入的外部数据 7 ※ 刷新导入的外部数据源 8 疑难3 在数据源移动后如何修改数据源的连接路径 9 ※ 根据弹出提示自动修改移动的文件路径 10 ※ 通过修改连接字符串来修改移动的文件路径 11 疑难4 如何将混合类型的字段强制设置为文本字段 11 ※ 强制设置导入的外部数据源的字段为文本形式 13 ※ SQL中的连接字符串详解 13 疑难5 如何对外部数据进行安全设置 15 ※ 安全设置外部数据 15 1.2 SQL基础概念 17 疑难6 如何从表中获取多列和多行 17 ※ 使用SQL语句获取行和列数据 17 ※ 什么是关系数据库中的表 18 ※ 一行在表中表示什么信息 18 ※ 一列在表中表示什么信息 19 疑难7 如何通过唯一标识把两个表的数据连接在一起 19 ※ 如何理解主键标识 20 1.3 SQL语句入门 21 疑难8 如何查询工作表中单列数据 21 ※ 使用SQL获取单列数据 22 ※ 什么是SELECT子句 22 疑难9 如何查询工作表中多列数据 23 ※ 使用SQL语句获取多列数据 24 ※ SQL列字段命名的限制 24 疑难10 如何查询工作表中的所有列数据 25 ※ 如何理解SQL语句中的通配符 26 ※ 什么叫别名 26 疑难11 如何使用列别名 26 ※ 如何使用列别名 27 疑难12 如何使用DISTINCT查询工作表中不重复的记录 28 ※ SQL语句中关键词DISTINCT的使用 29 疑难13 如何查询百度豪华车排行榜中某日搜索量大于800的记录 30 ※ SQL语句中WHERE子句的使用 31 疑难14 如何在SQL中使用定义名称 31 ※ 定义名称在SQL语句中的应用 32 ※ 什么叫名称 33 疑难15 如何对学生的成绩进行降序排列 33 ※ ORDER BY子句的使用 34 疑难16 如何不借助源数据表使用SQL语句 34 ※ 什么情况下的SQL语句可以不使用FROM子句 35 疑难17 如何把一条新记录添加到数据源中 35 ※ INSERT INTO语句的使用 37 疑难18 如何在Excel中更新数据 38 ※ UPDATE语句的使用 39 疑难19 如何提取带有合并单元格的数据 39 ※ 如何对包含合并单元格字段的工作表使用SQL语句 40 疑难20 如何解决查询结果中有空白记录的问题 41 ※ 如何去除查询结果中出现的空白记录 41 1.4 练习与思考 42 第2章 SQL运算符使用 43 2.1 比较运算符 43 疑难21 如何查询报考某专业的考生 43 ※ 为SQL设置条件查询子句 44 ※ 不以第一行为起点的数据表示 44 ※ 等号运算符 45 疑难22 如何查询字段值中包含双引号的数据 45 ※ 包含引号的数据表示 46 疑难23 如何查询指定日期的出口数据 47 ※ 日期型数据表示 48 疑难24 如何查询啤酒销量超过50kL的信息 49 ※ 带有括号的字段名表示方式 50 ※ 大于、小于等运算 50 疑难25 如何查询某班外同学的考试成绩 51 ※ 不等号比较运算 52 2.2 逻辑运算符 52 疑难26 如何查询缺考同学的数据 52 ※ NULL值的判断 53 疑难27 如何查询同时参加两项比赛的人员名单 54 ※ IN运算的妙用 55 ※ NOT IN运算出现NULL值时的注意事项 55 疑难28 如何查询2010年进入公司的员工名单 56 ※ 利用BETWEEN求某范围内的数据 57 疑难29 如何查询姓“刘”的所有人员 57 ※ 运用LIKE进行模糊匹配 58 ※ 模糊匹配中不确定长度的字符表示 58 疑难30 如何查询订单号第三、四位为指定文本的出库记录 59 ※ 模糊匹配中长度为1的字符表示 60 疑难31 如何查询成绩为C以上的同学 60 ※ 模糊匹配中字符区间的表示 61 疑难32 如何查询商品代号中带有数字的商品数据 62 ※ 模糊匹配中数字区间的表示 62 疑难33 如何查询姓名两端没有方括号的所有员工 63 ※ 模糊匹配中特殊字符的表示 64 2.3 连接运算符 64 疑难34 如何对多个字段进行模糊查询 64 ※ 连接符(&)的妙用 65 疑难35 如何查询同时满足申请租赁型经济适用房条件的人员 66 ※ 同时满足多个条件的查询 67 疑难36 如何查询付款超过最后付款期限及尚未付款的客户 68 ※ 满足多个条件之一的查询 69 2.4 算术运算符 69 疑难37 如何查询语数外总分大于240分的同学名单和总成绩 69 ※ 字段的四则运算 70 ※ 日期与数字的关系和转换 71 疑难38 如何计算员工社会保险缴纳金额 72 ※ 按照百分比例计算字段 73 ※ Excel中数字的精度 73 疑难39 如何根据点坐标计算距原点的距离 74 ※ 幂运算的妙用 74 2.5 练习与思考 75 第3章 SQL常见函数使用 76 3.1 字符串函数 76 疑难40 如何根据二代身份证号返回出生年份 76 ※ 四舍六入五单双的规则 79 ※ MIDB函数的用法 80 ※ 字符与字节的关系 80 疑难41 如何返回邮政机构所在行政区域 80 ※ RIGHT函数与RIGHTB函数的区别 83 疑难42 如何分离联系电话的区号与电话号码 83 ※ LEFT函数与LEFTB函数的区别 85 疑难43 如何替换字符串中的地名 85 疑难44 如何去除字符串首尾两侧的空格 89 ※TRIM与LTRIM、RTRIM※ 91 ※ 空格与不可见字符 91 疑难45 如何返回字符串中某字符所在位置 92 疑难46 如何比较两列数据是否相同 95 ※ CBOOL函数与STRCOMP函数用法比较 98 疑难47 如何查询有换行符字段的记录 100 疑难48 如何去除路径仅返回文件名 101 疑难49 如何将英文歌曲名称转换为小写字母 104 3.2 算术函数 111 疑难50 如何将价格进位到角得到产品零售价 111 疑难51 如何求出阳台的圆弧长度 115 疑难52 如何返回直角三角形斜边长度 117 ※ 弧度与角度的转换 118 ※ SQL中可用的其他三角函数 118 疑难53 如何将编码转换为十六进制数 118 ※ 二进制、八进制、十六进制介绍 120 ※ 进制转换方法简介 120 疑难54 如何根据货物重量返回满载车数量 121 3.3 转换函数 123 疑难55 如何统一项目起止的日期格式 123 疑难56 如何格式化出货量增长率 128 疑难57 如何整理投票结果并返回读书数量 132 疑难58 如何将数字转换为字符 133 ※ CSTR函数与STR函数的区别 135 疑难59 如何将字符转换成数字 136 ※ CDBL函数、CSNG函数及CVAR函数用法比较 138 3.4 其他函数 138 疑难60 如何根据学生成绩返回等第成绩 138 疑难61 如何得到调整后的工资额 140 ※ ISNUMERIC函数 142 疑难62 如何得到反转后的回文诗 143 疑难63 如何按规定格式返回数字与文本混杂的数据 144 ※ 纯小数前是否显示前导0 153 疑难64 如何查看支出是否超出预算 154 疑难65 如何根据二代身份证号码判断性别 158 3.5 练习与思考 162 第4章 SQL日期和时间函数使用 163 4.1 获取日期 163 疑难66 如何查询今天是星期几 163 ※ 关于星期的典型语句 175 疑难67 如何用SQL语句得到当前月的剩余天数 176 疑难68 如何用SQL判断今年是平年还是闰年 178 ※ 判断平年或闰年的语句 180 疑难69 如何用SQL获取今年母亲节的日期 182 疑难70 如何用SQL计算员工的工龄工资 183 疑难71 如何用SQL计算食品到期日期 187 4.2 格式化日期 188 疑难72 如何将日期和时间转换为系统标准格式 188 ※ 利用FORMAT函数转换日期 189 疑难73 如何获取合同签订的英文日期 190 ※ 利用FORMAT函数转换为英文日期 191 ※ 利用函数复合运用转换为英文日期 191 疑难74 如何将日期转换为报表所需格式 191 ※ 获取当月总天数的技巧 192 4.3 时间段查询 193 疑难75 如何返回第一季度中的销售记录 193 ※ DATEPART函数忽略年份获取日期所在的季度 194 疑难76 如何提取合同即将到期的员工及最迟续订期限 194 ※ 利用WEEKDAY函数获取工作日信息 195 疑难77 如何获取所有职员的星座 196 ※ 不同年份查询相同月份、日期所在区间 197 ※ 笛卡儿积的概念 197 疑难78 如何找出销售额最高的月份 198 ※ 利用MONTHNAME函数获取月份的完整表示 199 疑难79 如何查询库存中某日的出入库情况汇总 199 ※ 日期和时间的关系 200 4.4 练习与思考 200 第5章 SQL排序查询 201 5.1 单列数据排序 201 疑难80 如何提取某区域的销售记录并按销售额降序排列 201 ※ 利用ORDER BY子句对记录进行排序 202 ※ SQL查询机制步骤详解 202 疑难81 如何找出考试成绩总分前5名的同学 203 ※ 利用TOP谓词查询前几条记录 204 ※ TOP PERCENT保留记录规律 204 疑难82 如何查询百米赛跑项目第5~8名的运动员 205 ※ 伪时间排序技巧 206 ※ 查找排名中间的记录的技巧 206 ※ TOP谓词出现重复记录的查询规律 207 疑难83 如何将考生姓名进行随机排序 207 ※ 随机排序技巧 208 ※ 伪随机数概念 208 5.2 多列数据排序 209 疑难84 如何将员工名单按照多级部门进行排序 209 ※ 多列排序技巧及规律 210 疑难85 如何从总分前10名中找出语文成绩最差的3名同学 210 ※ 在排序结果中查找指定记录的技巧 211 疑难86 如何得到足球比赛小组赛的出线名单 212 ※ 指定不同排序方法的多列排序 213 ※ 利用数学计算方法进行多列排序 213 5.3 练习与思考 214 第6章 聚合函数与分组统计 215 6.1 聚合函数的应用 215 疑难87 如何求某公司的总销售量及总销售额 215 ※ SUM函数在SQL语句中的使用 216 疑难88 如何求某班学生的各科平均成绩 216 ※ AVG函数在SQL中的使用 217 疑难89 如何统计订单号不重复的数目 217 ※ DISTINCT+COUNT统计不重复的记录数 218 疑难90 如何获取学生年龄的最大值及最小值 219 ※ MAX函数及MIN函数在SQL语句中的使用 220 疑难91 如何剔除最大值及最小值后求均值 220 ※ SUM+MAX+MIN+COUNT函数综合使用 221 疑难92 如何获得入网套餐终端补贴起始月份及终止月份 221 ※ FIRST函数及LAST函数的使用 222 疑难93 如何估计货运运费的标准偏差及标准差 222 ※ STDEV函数及STDEVP函数的使用 223 疑难94 如何求某组学生口语测验成绩的方差 224 ※ VAR函数及VARP函数的使用 224 疑难95 如何计算某列中空值的数目 225 ※ NULL在SQL语句中的使用 226 疑难96 如何计算不同日期的数量 226 ※ COUNT+FORMAT函数的使用 227 6.2 域聚合函数的应用 227 疑难97 如何按商品编码统计累计销售额 227 ※ DSUM函数在SQL语句中的使用 229 疑难98 如何求每位学生得分最高两科的所有记录 229 ※ DCOUNT函数在SQL语句中的使用 230 疑难99 如何求指定条件的货款额均值 231 ※ DAVG函数在SQL语句中的使用 232 疑难100 如何查询指定条件的人员的姓名 233 ※ DLOOKUP函数在SQL语句中的使用 234 疑难101 如何求指定条件的营业厅的最高分及最低分 234 ※ DMAX函数及DMIN在SQL语句中的使用 235 疑难102 如何求指定条件的第一个值及最后一个值 236 ※ DFIRST函数及DLAST在SQL语句中的使用 237 疑难103 如何求指定条件的方差 238 ※ DVAR函数及DVARP在SQL语句中的使用 238 疑难104 如何求指定条件的标准偏差标准差 239 ※ DSTDEV函数及DSTDEVP在SQL语句中的使用 240 6.3 分组统计 240 疑难105 如何汇总同一物品的数量及价格 241 ※ GROUP BY子句的使用 241 疑难106 如何分组汇总多列数据 242 ※ 使用多个分组列的GROUP BY子句 243 疑难107 如何查询销售数量大于15台的手机品牌及销售金额 243 ※ HAVING子句的使用 244 疑难108 如何查询平均成绩大于60分同学的学号、姓名和平均成绩 245 ※ 使用HAVING子句提取平均成绩大于60分的记录 246 疑难109 如何统计姓“林”的员工人数 246 ※ HAVING子句结合LEFT函数统计某姓氏的人数 247 疑难110 如何求某车间的机器在每分钟内的平均速度 248 ※ 通过GROUP BY子句结合FORMAT函数对时间段进行分组 249 疑难111 如何查询材料编号重复出现2次或2次以上的记录 249 ※ GROUP BY子句+HAVING子句+WHERE子句提取重复出现2次及 2次以上的记录 250 疑难112 如何查询只出现1次编码的记录 251 ※ GROUP BY子句+HAVING子句提取只出现1次的记录 251 ※ WHERE子句=1提取只出现1次的记录 252 疑难113 如何查询“不重复且价格最低”的记录 252 ※ GROUP BY子句+MIN函数获取最低单价的记录 253 疑难114 如何计算每个得分范围内的数量 253 ※ GROUP BY+IIF函数的使用 254 ※ GROUP BY+CHOOSE函数的使用 255 ※ GROUP BY+PARTITION函数的使用 256 疑难115 如何将多行的享受月份转化为一行起止的享受月份 256 ※ GROUP BY+FIRST函数+LAST函数的使用 257 疑难116 如何实现表格行列转置 257 ※ TRANSFORM语句的使用 258 疑难117 如何得到每个人的成绩表 259 ※ TRANSFORM的交叉表及GROUP BY子句汇总求和 260 疑难118 如何生成列合计的交叉表 260 ※ TRANSFORM+GROUP BY子句+UNION ALL求带有小计及合计行的 结果表 261 6.4 练习与思考 264 第7章 连接查询 265 7.1 内连接查询 265 疑难119 如何查询水果所对应的颜色 265 ※ 一对一连接两个工作表 266 疑难120 如何查询每条成绩表记录所对应的学生信息 266 ※ 公共字段连接两个工作表 267 疑难121 如何理解连接中的多对多关系 268 ※ 笛卡儿积导致数据虚增的原因 269 疑难122 如何进行两个或者两个以上表的连接 270 ※ 多个工作表连接 271 ※ AND在多个工作表连接中的使用 271 疑难123 如何根据测评分数给学生评定等级 271 ※ 使用BETWEEN AND连接工作表 272 疑难124 如何得到各城市满意度大小比较关系图 273 ※ 使用大于条件连接工作表 274 疑难125 如何进行字母之间大小的对比 274 ※ 通过字母大小比较连接工作表 275 疑难126 如何处理比赛对阵表 275 ※ 使用行函数连接工作表 276 疑难127 如何使用INNER JOIN连接三个表 276 ※ 使用INNER JOIN连接工作表 277 7.2 外连接查询 277 疑难128 如何使用左外连接 278 ※ 使用LEFT OUTER JOIN进行左连接 279 疑难129 如何使用右外连接 279 ※ 使用RIGHT OUTER JOIN进行右连接 280 疑难130 如何使用全外连接 281 ※ 使用全外连接 281 疑难131 如何对超过两个或两个以上的表进行左外连接 282 ※ 多个工作表进行左连接 283 7.3 连接查询的高级应用 284 疑难132 如何把两个工作表的资料合并在一起 284 ※ UNION ALL的使用 285 ※ UNION ALL与UNION的区别 285 疑难133 如何把列数不等的两个工作表合并起来 286 ※ 列数不等的工作表进行连接 287 疑难134 如何查询指定条件的职工资料 288 ※ 剔除指定记录进行内连接 289 疑难135 如何查询各组长管理的组员记录 289 ※ 内连接及WHERE子句的使用 290 疑难136 如何获取每一户对应的户主姓名 291 ※ 左外连接的高级使用 293 疑难137 如何查询所有学生的学号、姓名、选课数及总成绩 293 ※ ISNULL+IIF+左外连接的使用 294 疑难138 如何查询学过“002”和“003”课程的学生的学号、姓名 295 ※ 内连接+WHERE子句+GROUP BY子句+HAVING子句的综合应用 296 疑难139 如何生成排列组合 297 ※ 什么叫交叉连接 298 疑难140 如何生成0~999的数字 298 ※ 交叉连接生成一组数 299 7.4 练习与思考 299 第8章 子查询 300 8.1 简单子查询 300 疑难141 如何查询销售数量大于平均销售量的数据 300 ※ 大于平均值的子查询 301 疑难142 如何查询“王双”所在部门的所有员工的销售情况 302 ※ 带有IN的子查询 303 疑难143 如何输出每个学生在必修表中未修的课程 304 ※ 带有NOT IN的子查询 305 疑难144 如何查询选修了课程名为“大学数学”的学生学号及姓名 306 ※ 带有IN的子查询 307 疑难145 如何查询出每家户口所在地不同的记录 309 ※ 使用EXISTS谓词进行子查询 310 疑难146 如何查询数学成绩大于80分的学生的相关记录 310 ※ 使用NOT EXISTS谓词进行子查询 311 疑难147 如何查询销售数量大于北京分公司所有产品销售数量的品种、 分公司、数量、金额 312 ※ 使用ALL进行子查询 313 疑难148 如何查询高于某些店销售数量的信息 314 ※ 使用ANY进行子查询 315 疑难149 如何查询两门以上不及格课程的学生姓名、学号及其平均成绩 316 ※ 多条件获取符合条件的学号进行子查询 317 疑难150 如何查询大于平均年龄的员工姓名、年龄及学历 318 ※ 使用HAVING子句进行子查询 319 8.2 复杂的子查询 319 疑难151 如何返回所在系平均年龄在系平均年龄以上的教师相关信息 319 ※ 使用比较表达式进行子查询 320 疑难152 如何求各城市各月销售数量之间的排名 320 ※ 使用1+COUNT(*)产生排名的子查询 321 疑难153 如何对考生的成绩进行排名 322 ※ 使用多个1+COUNT(*)进行子查询 323 疑难154 如何汇总各个国家获得两块以上的金牌记录 323 ※ 使用SUM(1)进行子查询 324 疑难155 如何查询进价相同及进价不同的商品 325 ※ 结合FIRST+LAST+IN的子查询 327 疑难156 如何实现在分类汇总行中对某字段进行计数统计 327 ※ 带有“总计”的综合子查询 328 疑难157 如何统计各大区域各省份的历年项目数小计并在所在区域内进行排名 329 ※ 多层嵌套综合子查询 331 疑难158 如何根据各城市销售数量给其增加自动编号列 331 ※ 嵌套子查询及1+COUNT(*)形成排名 333 8.3 练习与思考 333 第9章 SQL与数据透视表 334 9.1 数据透视表基础 334 疑难159 如何汇总各供应商的供货总数及总金额 334 ※“数据透视表字段列表”窗格说明 335 疑难160 如何统计各班某科成绩的总体情况 336 ※ 数据透视表汇总方式介绍 338 疑难161 如何在数据透视表中使用鼠标拖放 338 ※ 启用经典数据透视表布局 339 疑难162 如何设置合并单元格标志 339 ※ 设置数据透视表合并单元格标志 340 疑难163 如何添加计算字段来计算销售金额提成 340 ※ 数据透视表计算字段介绍 341 疑难164 如何添加计算项获取同比值 342 ※ 数据透视表计算项介绍 343 疑难165 如何按年月汇总销售额 343 ※ 数据透视表日期字段分组组合 344 疑难166 如何创建年份的单页字段数据透视表 345 ※ 创建数据透视表自定义页字段 347 9.2 SQL与数据透视表 347 疑难167 如何创建动态的数据透视表 347 ※ 使用SQL语句创建动态的数据透视表 349 疑难168 如何汇总同一个工作簿中的所有数据 349 ※ 使用SQL语句连接同一个工作簿内所有的工作表创建动态的数据透视表 351 疑难169 如何汇总同一个工作簿中不同区域的数据 351 ※ 使用SQL语句连接同一个工作簿内不同工作表中的不同区域创建数据透视表 353 疑难170 如何汇总不同工作簿中不同工作表的数据 353 ※ 使用SQL语句连接不同工作簿中不同工作表的所有数据创建动态的数据透视表 356 疑难171 如何对列数不等的工作表创建数据透视表 357 ※ 使用SQL语句连接列数不等的工作表创建动态的数据透视表 359 疑难172 如何分别统计各部门不同性别、学历、职位的人数 359 ※ 使用SQL语句对源数据进行结构转换创建动态的数据透视表 361 疑难173 如何创建当月销量及累计销量的数据透视表 362 ※ 使用SQL语句创建带有当月统计及累计的动态数据透视表 364 9.3 练习与思考 365 第10章 SQL和VBA 366 10.1 VBA基础 366 疑难174 如何输入和修改VBA代码并保存 366 ※ VBA编辑环境及VBA代码的编写和运行 368 ※ 启用宏的工作簿在Excel 2003与Excel 2007及以上版本的区别 369 疑难175 如何设置SQL所需的VBA环境 369 ※ 引用ADO组件设置SQL编程环境 369 10.2 利用ADO组件进行数据库连接 370 疑难176 如何创建数据库连接实现简单的SQL查询 370 ※ 利用ADO连接数据库 371 ※ 利用ADO执行SQL查询,并在Excel中输出结果 371 ※ ADO连接不同的数据库 371 疑难177 如何使用VBA实现多数据库查询 373 ※ 同时查询多个不同的数据库 374 疑难178 如何让用户选择数据库进行查询 374 ※ 利用VBA选择数据库路径 376 ※ Excel自定义文档属性的概念 377 10.3 利用ADO组件进行表的操作 377 疑难179 如何使用VBA在数据库中新建一个表 377 ※ 用CREATE语句新建数据表 378 ※ 用SQL语句新建Excel工作表 379 疑难180 如何使用VBA删除数据库中的表 379 ※ DROP语句删除表 380 疑难181 如何使用VBA创建新的字段 381 ※ 新建数据表中的字段 382 ※ 删除数据表中的字段 382 疑难182 如何使用VBA修改表中现有的字段类型 382 ※ 修改数据表中的字段名及类型 383 疑难183 如何使用VBA将某个表复制到其他数据库中 383 ※ 整个数据表的复制 385 10.4 数据操作 385 疑难184 如何使用VBA向表中添加新的记录 385 ※ INSERT INTO语句实现数据的添加 387 疑难185 如何使用VBA将满足条件的记录添加到表中 388 ※ INSERT INTO语句实现数据的批量添加 389 疑难186 如何使用VBA修改某个特定记录 390 ※ UPDATE语句实现数据的批量修改更新 391 ※ UPDATE语句实现跨数据表的更新 392 疑难187 如何使用VBA批量更新记录 392 ※ DELETE语句实现数据的批量删除 394 ※ 数据表的删除和清空 394 疑难188 如何使用VBA将SQL查询结果用于数据透视表 394 ※ 创建数据透视表的数据源 396 疑难189 如何使用VBA获取某几行记录 397 ※ 用GetRows方法实现将查询结果转换为数组 398 ※ 记录集的指针 398 疑难190 如何使用VBA进行多表汇总 399 ※ 多表的汇总查询 401 ※ OpenSchema实现数据库中结构的获取 401 疑难191 如何使用VBA进行文件的上传和下载 402 ※ 将SQL查询结果存放于记录集对象 405 ※ AddNew实现记录的添加 405 ※ 附件数据类型的应用 407 10.5 练习与思考 408 第11章 综合应用 409 11.1 销售报表分析 409 疑难192 如何获取2010年各月销售总数量及总金额 409 ※ 使用SQL语句对多个工作表进行分组汇总 411 疑难193 如何获取2010年销量前10位客户各月销售数量明细表 411 ※ 使用SQL语句结合数据透视表获取销量前10位的客户明细 411 疑难194 如何获取各客户在2010年各个产品分类的销售总量及销售总金额 414 ※ 获取各产品销售总量及销售总金额 414 疑难195 如何获取各销售经理所负责客户的销售总量及总金额 416 ※ 获取各客户销售总量及销售总金额 416 疑难196 如何获取各个区域的销售总量及销售总金额 417 ※ 获取各区域销售总量及销售总金额 417 疑难197 如何汇总各业务员的销售总量及销售总金额 418 ※ 获取各业务员的销售总量及销售总金额 419 11.2 利用VBA结合SQL设计微型系统 420 疑难198 如何设计通讯录 421 疑难199 如何设计通用汇总程序 430 疑难200 如何设计工资管理系统 447