字符型数据动态排序

编辑
  • 文档创建者:axing
  • 浏览次数:2023次
  • 编辑次数: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}



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


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


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




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

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



    报表设计与上面一致。

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


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



    具体排序公式如下:

    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效果



    2)h5效果





    附件列表


    主题: 设计思路
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]