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

编辑
文档创建者:yets11 (67190 )     浏览次数:2650次     编辑次数:2次     最近更新:susie 于 2017-03-02     

目录:

1、问题描述编辑

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


222

2、实现原理编辑

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


3、实现过程编辑

打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameterr\DynamicCol\DynamicCol1.cpt

第1步、将A2-E2单元格的数据设置改由列表改成分组,如图
222


第2步、将参数栏文件控件字段值清空,进入数据集编辑界面,将col变量默认值清空


222


222



第3步、编辑sql,将下面的sql复制进去,替换原来的sql

SELECT ${if(len(col)=0,'*',replace(col,'销量','sum(销量)'))} FROM [销量] ${if(len(col)<=1,"","group by "+replace(replace(col,',销量',''),'销量',''))}


222

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

已完成效果见上图。

附件列表


主题: 参数应用
标签: 暂无标签 编辑/添加标签
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?