1. 概述
1.1 预期效果
在设计报表的时候,可能需要根据多列数据生成多级序号,效果如下图所示:
1.2 实现思路
先获取第一列数据当前值在当前列数据去重后的序号.
再获取第二列数据当前值在(当前列数据去重后且第一列数据等于当前第一列的值)的序号。
对分别获取到的序号进行拼接。
2. 示例
2.1 数据准备
新建数据集 ds1,数据库查询语句为:SELECT * FROM 部门
2.2 报表设计
1)如下图设计表格样式,B2 数据设置为列表,A2 左父格为 B2 。
2)A2 单元格输入公式:
INARRAY(B2,UNIQUEARRAY(B2[!0]))+"."+INARRAY(C2,UNIQUEARRAY(C2[!0]{B2=$B2}))
2.3 效果预览
1)PC端
保存报表,点击分页预览,多级序号效果如下图所示:
2)移动端
3. 模板下载
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\多级序号.cpt
点击下载模板:多级序号.cpt
4. 注意事项
如果有第三列数据 (D2) 也要生成序号,则 A2 左父格为 C2 ,公式为:INARRAY(B2,UNIQUEARRAY(B2[!0]))+"."+INARRAY(C2,UNIQUEARRAY(C2[!0]{B2=$B2}))+"."+INARRAY(D2,UNIQUEARRAY(D2[!0]{B2=$B2&&C2=$C2}))
如果有第四列数据 (E2) 也要生成序号,则 A2 左父格为 D2 ,公式为:INARRAY(B2,UNIQUEARRAY(B2[!0]))+"."+INARRAY(C2,UNIQUEARRAY(C2[!0]{B2=$B2}))+"."+INARRAY(D2,UNIQUEARRAY(D2[!0]{B2=$B2&&C2=$C2}))+"."+INARRAY(E2,UNIQUEARRAY(E2[!0]{B2=$B2&&C2=$C2&&D2=$D2}))
如此类推。