按段分组

阅读(6773) 标签: 按段分组,

本节将以按段分组报表为例,学习plot()函数的用法。

一个例子

按段分组也是个比较典型的不规则分组报表,其分组是根据数据的值段来分的,例如按照分数段、年龄段、按时间段等,属于某个值区间的记录归到一个组里如下图所示:

在上图中我们可以看到,报表根据订购日期将订单数量和订单金额分成四组,分别统计“2012年圣诞前”、“2012年圣诞--2013年国庆”、“2013年国庆--2014年五一”、“2014年五一以后”四个时间段的订单。

这种按值段进行分组的分组报表被称为按段分组报表。

下面我们介绍一下润乾报表中如何实现该报表

 

1、  通过“报表”-> “数据集”菜单,定义数据集

ds1SELECT 订单.订购日期,订单明细.数量,订单明细.单价,订单明细.折扣,客户.地区 FROM 订单明细,订单,客户 WHERE  客户.客户ID = 订单.客户ID  AND  订单.订单ID = 订单明细.订单ID

2、  定义单元格表达式

(1) B1单元格输入表达式:=ds1.plot(订购日期, arg1)

设置显示值为:map(to(0,count(arg1)+1),arg2)

将扩展属性设置为:横向扩展

(2) A3单元格输入表达式:= ds1.group(地区;地区:1)

(3) B3单元格中输入表达式:= ds1.count()

(4) C3单元格中输入表达式:= ds1.sum(数量*单价)

设置显示格式为:¥#0.00

3、  设置报表参数

分别设置arg1arg2两个参数,将参数arg1的数据类型设为“日期组”,值设置为“2012-12-25, 2013-10-1, 2014-5-1”;将参数arg2的参数类型设为“字符串组”,值设置为“2012年圣诞前, 2012年圣诞--2013年国庆, 2013年国庆--2014年五一, 2014年五一以后”

4、  看设计界面截图

此报表保存为11.3.1.rpx

从上述介绍可以看出,按段分组的关键在于B1格的表达式用到了datasetName.plot函数,按段分组就是利用datasetName.plot函数来实现的。我们来看一下datasetName.plot函数的用法

plot

函数说明:

根据数据值段进行分组,俗称“按段分组”

语法:

datasetName.plot(valueExp,listExp{,filterExp})

参数说明:

valueExp  用于分组的值表达式

listExp  数据值段列表,同valueExp数据类型相同的数组,要求其中元素从小到大排列

filterExp  过滤表达式

返回值:

整数组,代表记录按值段分组后组的顺序,如list(0,1,2,3)代表第一组,第二组,第三组,第四组。因此,定义完单元格数据值表达式后还需要定义显示值表达式,比如第一组代表不及格,第二组代表及格等等

选项:

@r  是否为根数据集表达式

@c  表示与元素比较时数据值段临界值只包含在第1个碰到的区间,相同的临界值不包含在第2个碰到的区间。缺省数据值段临界值只包含在第2个碰到的区间。

@z  表示listExp返回的数组按从大到小排列;缺省为从小到大排列

示例:

1ds1.plot(成绩,list(608090) ,科目=="数学")  返回值为list(0,1,2,3)

对数据集ds1过滤出科目等于数学的记录按成绩段进行分组,60分以下不包含60分、60-7980-8990分及90分以上等四组。同时定义显示值表达式为:map(list(0,1,2,3),list("不及格","及格","良好","优秀"))

2ds1.plot@c(成绩,arg1)  其中arg1为参数,其数据类型是整数组,其值为"60,70,80,90" 。显示值表达式为:map(to(0,count(arg1)),arg2),其中arg2为字符串组,其值为{"不及格","及格","","良好","优秀"}

本例通过参数动态控制分组值段以及结果组的显示值