1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 预期效果
按段分组是一个比较典型的高级分组报表样式,其分组是根据数据的值段来分的。
比如按照分数段、年龄段、时间段等,属于某个值区间的记录归到一个组里显示,如下图所示:
1.3 实现思路
利用数据列属性中的分组进行自定义分组。
2. 示例
2.1 报表设计
2.1.1 新建报表
新建普通报表,添加数据集 ds1,SQL 语句为:SELECT 雇员ID, 职务, cast(strftime('%Y','now') as int)-cast(strftime('%Y',出生日期) as int)+1 AS 年龄 FROM 雇员,如图所示:
雇员表中存的是雇员的出生日期,因此在 SQL 中我们使用函数strftime('%Y','now')-strftime('%Y',出生日期) +1,根据出生日期计算出员工的年龄。
2.1.2 报表样式
报表样式如下图所示:
2.1.3 扩展方向
1)选中 A3 单元格,点击「单元格属性>扩展>扩展方向」,设置 A3 单元格为「纵向扩展」,如下图所示:
2)选中 B2 单元格,点击「单元格属性>扩展>扩展方向」,设置 B2 单元格为「横向扩展」,如下图所示:
选择 B3 单元格的数据列设置为「汇总」、「个数」,扩展方向为「不扩展」,如下图所示:
2.2 自定义条件分组
设计器预览模板,此时会将所有年龄都扩展出来,我们希望将年龄分成段显示。
1)选中年龄数据列所在单元格 B2,「单元格元素>基本>数据设置」修改为「分组」、「高级」,如下图所示:
2)点击「自定义按钮」,弹出自定义分组对话框,选择「条件分组」。将年龄分成四段。
组 1:命名为「小于 20 岁」,条件为年龄小于 20,如下图所示:
组 2:命名为 「20~30 岁」,条件为年龄大于等于 20 and 年龄小于 30,如下图所示:
组3:命名为 「30~40岁」,条件为年龄大于等于 30 and 年龄小于 40,如下图所示:
组 4:命名为「大于 40 岁」,条件为年龄大于等于 40,如下图所示:
2.3 强制分组
由于数据库表中没有符合小于 20 岁的年龄,因此预览时不显示小于 20 岁这一组,如下图所示:
若希望即使没有符合的的数据,仍然显示出所有定义的分组的话,可以在自定义分组界面选择「强制分组」,如下图所示:
2.4 效果预览
2.4.1 PC 端
保存模板,选择分页预览,效果如 1.2 节中所示。
2.4.2 移动端
App 与 HTML5 显示效果相同,如下图所示:
3. 已完成模板
已完成的模板,可参见%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\GroupReport\按段分组.cpt
点击下载模板:按段分组.cpt