历史版本8 :动态排名 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

一般情况下,排名都是通过 排名组内排名 的方式实现。

但有时,用户需实现:【在填报模式下,根据输入值的不同来“动态改变”某一列值的排名情况】功能时,上面的方法就无法满足了,实现效果如下图:

2. 解决方案编辑

通过报表内置的rank()函数来变换实现。

RANK(A,B,C)返回一个数在一个数组中的秩(如果把这个数组排序,该数的秩即为它在数组中的序号

参数说明:

A:所求秩的数(可以是Boolean型,true=1,false=0

B:可以是数组,引用,或一系列数,非实数的值被忽略处理(接受 Boolean 型,true=1,false=0

C:指定求秩的参数,非零为升序,零为降序

3. 示例编辑

3.1 内置数据集

新建模板,添加内置数据集,如下所示:

3.2 模板设置

将字段拖入对应的单元格中,模板设置如下:

给 C2 单元格添加“数字控件”

D2 单元格输入公式:B2+C2

E2 单元格输入公式:rank(D2, D2[!0], 0),其中D2[!0]表示D2扩展出来的所有单元格

注:其中 B2 ,C2 默认需为数字格式,才可实现排名,若 B2 ,C2 单元格为其他格式,则会出现下图情况:

image.png

若 B2,C2 为字符串,则在 D2 输入公式=B2+C2+0,则可解决排名乱码问题

4. 保存预览编辑

保存模板,选择填报预览。

分别在 C2 单元格中输入不同的数值,E2 单元格的排名值随着总分的变化而动态变化,效果如上图。

5. 已完成模板编辑

已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\动态排名.cpt

点击下载模板:动态排名.cpt