历史版本3 :解决动态列的分组统计问题 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 描述编辑
2. 思路编辑
由于FineReport为普通列提供的汇总不再适用于动态列,要想实现销量自动按前面的列自动汇总的话,必须通过sql进行处理,首先判断动态列是否选择了销量,然后把销量字段处理成汇总
3. 示例编辑
打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameterr\DynamicCol\数据集参数实现动态列.cpt。
1)将A2-E2单元格的数据设置改由列表改成分组,如图:
2)将参数栏下拉复选框控件默认字段值清空,如下所示:
3)修改数据集sql为:SELECT ${if(len(col)=0,'*',replace(col,'销量','sum(销量)'))} FROM [销量] ${if(len(col)<=1,"","group by "+replace(replace(col,',销量',''),'销量',''))},并删掉将col变量默认值,如下所示:
注:这里主要使用了FineReport内置的公式replace,如果存在销量,则替换成sum(销量),同时需要同时增加group by,并且在group by 中不能出现销量,否则sql会出错。
4. 效果预览编辑
保存模板,实现效果见上图。