字符型数据动态排序

  • 文档创建者:axing
  • 编辑次数:5次
  • 最近更新:axing 于 2018-12-05
  • 1. 问题描述

    如这篇文档所述的需求,根据点击次数奇偶性排序之字符型
    但是要做两个模板来实现太麻烦了,也不易于维护。下面描述如何使用一个模板解决问题。

    2. 解决思路

    1)利用sql的order by 字段 asc | desc 来解决。

    2)利用公式将字符型去重排序然后转化为对应的顺序号码进行排序。

    3. 解决步骤

    3.1 利用sql解决

    1)新建数据集,sql:SELECT * FROM 销量 where 地区='华北' order by 销售员 ${a}

    222

    2)报表设计如下,将字段拖到相应单元格中:

    222

    3)选中B1单元格,添加超级链接-动态参数a,值类型为公式:if(a="asc","desc","asc")

    222

    4)保存预览,可看到如下效果:


    222

    在线查看模板效果请点击:Order_7.cpt
    已完成模板,可参考:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\字符型动态排序-动参.cpt
    3.2 利用公式解决

    1)创建数据集,sql:SELECT * FROM 销量 where 地区='华北'

    222

    报表设计与上面一致。

    2)选中B1单元格,添加超级链接-动态参数a,值类型为公式:if(a=0,1,0)

    222

    3)选中A1单元格,设置扩展后排序

    222

    具体排序公式如下:

    if(a=0,EVAL("INDEX(\"" + B2 + "\",\"" + JOINARRAY(SORTARRAY(UNIQUEARRAY(B2[!0;!0])), "\",\"") + "\")"),EVAL("INDEX(\"" + B2 + "\",\"" + JOINARRAY(SORTARRAY(UNIQUEARRAY(B2[!0;!0])), "\",\"") + "\")")*-1)

    公式的基本思路是:

    先将B2扩展出来的所有数据进行去重

    再将去重后的数据进行排序

    将排序后的数据输出成字符串

    最后通过index函数获取当前B2单元格的值在上一步字符串中的位置

    4)保存预览,效果与上面一致

    在线查看模板效果请点击:Order_8.cpt
    已完成模板,可参考:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\字符型动态排序-公式.cpt

    4. 移动端效果

    1)app效果

    222

    2)h5效果

    222



    附件列表


    主题: 数据准备
    • 有帮助
    • 没帮助
    • 只是浏览