ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] SQL转置练习,转置九式。【开贴】

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-28 16:43 | 显示全部楼层
还是关于域聚合函数的问题,我上次发的帖有些问题可能还没讲清楚,所以这次在附件中用四个批注说明了问题。麻烦老师解答一下,谢谢了。

域聚合函数问题.rar

3.64 KB, 下载次数: 48

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-28 17:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Saint_Zuo 发表于 2012-3-28 16:43
还是关于域聚合函数的问题,我上次发的帖有些问题可能还没讲清楚,所以这次在附件中用四个批注说明了问题。 ...

  1. 问题1:
  2. select *, dsum("a","sheet1$a1:b6","b='a'") from `Sheet1$`
  3. 如果将以上语句改成
  4. select *, dsum("b","sheet1$a1:b6","b='a'") from `Sheet1$`后出错,请问什么原因?变量b为文本不也应该可以返回null的吗?另外为什么返回结果中Expr1000变量会在a,b的前面?
复制代码

回复1:

  1. select *, dsum("a","sheet1$a1:b6","b='a'") from `Sheet1$`
复制代码
释义: dsum("a","sheet1$a1:b6","b='a'") 意思是统计b字段中,项为a(第二列项为a的值)对应a字段(第一列)的项的求和汇总。b字段项a对应a字段的项有A2、A4和A6,其项分别为:1、3、5。对这3个记录进行求和汇总,得出9,所以结果为9。

  1. select *, dsum("b","sheet1$a1:b6","b='a'") from `Sheet1$`
复制代码
释义:dsum("b","sheet1$a1:b6","b='a'") 统计b字段中,项为a的记录,然后对项为a的b字段进行求和汇总,b字段符合条件的项为:a,a,a,对应的单元格为:B2、B4和B6,对这3个项进行求和汇总,因为b字段是文本,不能进行求和,所以报错。

  1. 另外为什么返回结果中Expr1000变量会在a,b的前面?
复制代码
这个是有关返回结果的排序规律。默认是列出的具体字段,在返回的结果表中,列位置(字段)从左到右依次列出,如果使用*表示返回所有字段,那么,这部分返回的字段默认排在最后列位置。
要查看字段在最终返回结果的列位置,可以如下图所示,取消勾选【列排序/刷选/布局(L)】项,然后刷新,即可得到真实的字段列位置。

QQ截图未命名.png
下班,明天再继续。

TA的精华主题

TA的得分主题

发表于 2012-3-28 22:21 | 显示全部楼层
太难了,不是一般的难,当时一个都没有想出来

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-29 09:35 | 显示全部楼层
wuxiang_123 发表于 2012-3-28 17:22
回复1:
释义: dsum("a","sheet1$a1:b6","b='a'") 意思是统计b字段中,项为a(第二列项为a的值)对应 ...

续151楼。
推演.PNG

域聚合函数问题-续.rar

11.07 KB, 下载次数: 130

点评

解释没抓住要领!  发表于 2020-10-11 21:04

TA的精华主题

TA的得分主题

发表于 2012-3-29 10:23 | 显示全部楼层
wuxiang_123 发表于 2012-3-29 09:35
续151楼。

谢谢老师了。关于select null或group by null等null的用法能否麻烦老师讲解一下呢?null能理解为函数中的单元格=""吗?
转置一中的语句就出现了null ,实在不理解呀!
TRANSFORM LAST(值)
SELECT NULL FROM
(SELECT F1 AS 值,DSUM("1","数据$","F1&F2<='"&F1&F2&"'") AS 列 from [数据$]
UNION ALL
SELECT F2 AS 值,DSUM("1","数据$","F1&F2<='"&F1&F2&"'")+0.1 AS 列 from [数据$])
GROUP BY NULL
PIVOT 列

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-29 10:38 | 显示全部楼层
Saint_Zuo 发表于 2012-3-29 10:23
谢谢老师了。关于select null或group by null等null的用法能否麻烦老师讲解一下呢?null能理解为函数中的单 ...

NULL(空值),表示未知值或结果未知,等价于EXCEL工作表的真空单元格。
null是常量,""是文本常量,0是数值常量,尽管有时候NULL和文本常量""、NULL和数值常量0可以相互代替,但它们是不同的,表示的意义也不一样。
NULL还有一个很有意思的特性,如果一个字段时纯由NULL插入常量构成,那么,这个字段在最终返回的结果集中不被返回,但是,在临时表中依然可以充当字段使用。
在交叉表查询,GROUP BY子句是不可省的,他决定了结果集的如何按行分组,一个字段如果存在多个不相同的项,那么,必然影响GROUP BY分组结果,但是,插入的常量则不会。因为插入常量可以理解为批量插入同一个常量值,然后将这些常量值构成字段。由于常量是同一个值,所以对GROUP BY的分组不产生影响。
在本帖中,我们不希望产生行字段,但行字段时必选参数,为此,我们利用NULL的特性来规避。
GROUP BY是不可省的,为此,我们利用插入常量的特性来规避,当然,你可以在GROUP BY子句不接NULL,而接其他的常量,如文本常量、数值常量等都可以。

TA的精华主题

TA的得分主题

发表于 2012-3-29 11:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
太强了,,很久没来EXCELHOME了,俺回家了。。

TA的精华主题

TA的得分主题

发表于 2012-3-29 15:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wuxiang_123 发表于 2012-3-29 10:38
NULL(空值),表示未知值或结果未知,等价于EXCEL工作表的真空单元格。
null是常量,""是文本常量,0是数 ...

谢谢老师了,好深奥呀。大写的NULL与小写的null是一个含义吧?
可以在select子句后也不接NULL,而接其他的常量,如文本常量、数值常量等吗?

点评

可以。大写NULL和小写NULL都是一样的。  发表于 2012-3-29 15:14

TA的精华主题

TA的得分主题

发表于 2012-3-30 11:31 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-3-30 11:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
留个记号以便继续学习
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 12:43 , Processed in 0.044056 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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