历史版本3 :动态显示前N个分组 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 概述编辑
1.1 问题描述
报表在普通分组的情况下,如何实现只显示前几个分组,后面的分组合并为其他呢?效果如下图所示:
1.2 实现思路
在「单元格元素」>「数据设置」位置,通过自定义公式分组实现。
2. 示例编辑
2.1 模板准备
2.2.1 设计报表
1)新建数据集 ds1,sql 语句为:SELECT * FROM 销量,如下图所示:
2)依次将 ds1 中销售员、产品类型、产品、销量字段拖入 A2、B2、C2、D2 单元格,设置模板样式,如下图所示:
3)点击 D2 单元格,在「单元格元素」>「数据设置」位置,选择「汇总-求和」,将 D2 单元格数据类型设置为按组汇总求和,如下图所示:
2.1.2 自定义分组
1)选中 A2 单元格,在「单元格元素」>「数据设置」位置,依次选择「分组-高级-自定义」,如下图所示:
2)点击「自定义」位置,自定义分组方式选择「公式分组」,显示模式选择「普通分组」,在「自定义值」位置写入公式:if(inarray($$$,ds1.select(销售员))<=3,$$$,"其他"),将第 3 个销售员之后的所有销售员合并为其他,如下图所示:
公式解释:
步骤 | 作用 | 公式说明 |
---|---|---|
ds1.select(销售员) | 取 ds1 数据集中销售员列 | tablename.select(colname):选出数据集某列的数据,返回结果是一个数组 |
inarray($$$,ds1.select(销售员)) | 获得当前单元格销售员在销售员列中的位置 | inarray(co,array):返回 co 在数组 array 中的位置,如果 co 不在 array 中,则返回 0 |
if(inarray($$$,ds1.select(销售员))<=3,$$$,"其他") | 将位置大于 3 的销售员更名为其他 | IF(boolean,string1,string2):判断函数,boolean 为 true 时返回 string1,为 false 时返回 string2 |
2.2 效果预览
2.2.1 PC 端
保存模板,点击「分页预览」,效果如 1.1 节所示:
2.2.2 移动端
App 及 HTML5 端预览效果如下图所示:
3. 模板下载编辑
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\primary\GroupReport\分组个数限制.cpt
点击下载模板:分组个数限制.cpt