看到很多朋友在Access进行分组统计查询时,常常用嵌套多层IIF函数来得到分组区间标志,如设表A有Age这样一个字段,一般朋友会采用如下的查询语句: Select IIf(Age<30,"0:29",IIf(Age<40,"30:39",IIf(Age<50,"40:49",IIf(Age<60,"50:59",IIf(Age<70,"60:69","70: "))))) As Range, Count (1) As Count From 表A Group By IIf(Age<30,"0:29",IIf(Age<40,"30:39",IIf(Age<50,"40:49",IIf(Age<60,"50:59",IIf(Age<70,"60:69","70: "))))) 不但语句冗长,而且由于多层IIF函数嵌套,极易出错。另外如果分组区间进一步细化,更加多层嵌套的IIF函数会让人有“乱花渐欲迷人眼”的感觉,出错的概率进一步增大。 下面我为大家介绍VBA自带的一个函数Partition,它能使你的语句变得精简,大大减少出错概率。 首先说明一下其的语法: Partition(number, start, stop, interval) number 必需。整数,在所有范围中判断这个整数是否出现。 start必需。整数,数值范围的开始值,该值不能小于0。 stop必需。整数,数值范围的结束值,该值不能等于或小于start。 interval必需。整数,指示在Start与Stop之间计算的每个范围的大小。该值不能小于1。 我们把上面的查询语句修改一下,采用Partition函数: Select Partition(Age,0,69,10) As Range, Count(Age) As Count From表A Group By Partition(Age,0,69,10) 效果是很显示的,与上面冗长的语句相比,简单是天差地别。 现在我结合这个实例再对Partition函数做进一步说明: Partition(Age,0,69,10) number 参数为Age字段,也就是对该字段的所有内容进行判断。 start 参数为0,即统计范围从0开始 stop 参数为69,即统计范围以69结束,这里需要解释一下。 虽然统计范围截止到69,但是如果表A中Age字段存在比69大的数值,即70及以上的,结果中将会为70及以上的数值划分出一个区间。(同理,如果start参数的值大于0,假设是10,那么当Age字段中存在比10小的数值,结果中也为会10以下(不含10)的数值划分出一个区间) interval 参数为10,即每个区间范围是10,即0:9,10:19,20:29………(说明:如果某区间范围内没有符合数值,结果中将省略这个区间) |
|站长邮箱|小黑屋|手机版|Office中国/Access中国
( 粤ICP备10043721号-1 )
GMT+8, 2025-2-20 04:46 , Processed in 0.071379 second(s), 16 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.