解决动态列的分组统计问题

  • 文档创建者:yets11
  • 编辑次数:12次
  • 最近更新:古都 于 2019-12-17
  • 1. 描述

    利用 数据集 或 函数 方式制作出来的动态列默认是只能显示固定的列字段的,没有动态分组统计的功能,如果报表需要使用动态列,同时某个字段又需要汇总,那么原来的方法就不太适用了,必须进行改进。

    最终效果如下图:

    222


    2. 思路

    由于 FineReport 为普通列提供的汇总不再适用于动态列,要想实现销量自动按前面的列自动汇总的话,必须通过 SQL 进行处理,首先判断动态列是否选择了销量,然后把销量字段处理成汇总


    3. 示例

    打开模板%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameterr\DynamicCol\数据集参数实现动态列.cpt

    1)将 A2-E2 单元格的数据设置改由列表改成分组,如图:

    222

    2)将参数栏下拉复选框控件默认字段值清空,如下所示:

    222

    3)修改数据集 SQL 为:SELECT ${if(len(col)=0,'*',replace(col,'销量','sum(销量)'))} FROM 销量 ${if(len(col)<1,"","group by "+replace(col,'销量',''))},并删掉将 col 变量默认值,如下所示:

    222

    注:这里主要使用了 FineReport 内置的公式 replace,如果存在销量,则替换成 sum(销量),同时需要同时增加 group by,并且在 group by 中不能出现销量,否则 SQL 会出错。


    4. 效果预览

    保存模板,实现效果见上图。

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!