用Jasper计算交叉增长率

   来源:http://community.jaspersoft.com/questions/847490/how-get-annual-growth-rate-crosstab 。

  交叉表的每一列都是动态生成的,进行列间计算时需要动态引用,用Jasper脚本实现此类需求有一定难度,用集算器在数据准备阶段实现则相对简单,下面用例子来说明。

  数据库表store存储着多种产品在2014、2015年的销售量,需要用交叉表呈现每种产品每年的销售量,并计算出各产品的年增长率。部分源数据如下:


用Jasper计算交叉增长率_第1张图片
 

   集算器代码:



 

   A1:取出store表的记录。

  A2:追加各产品的年增长率。group按产品分组,run对每组数据依次计算,record追加记录,~(i)表示当前组中的第i条记录。A2的计算结果如下:


用Jasper计算交叉增长率_第2张图片
 

   A3:将计算结果返回给报表。集算器对外提供JDBC接口,报表工具会将集算器识别为普通数据库。 

  用Jasper设计最简单的交叉表:


用Jasper计算交叉增长率_第3张图片
 

   预览后可以看到报表结果:


用Jasper计算交叉增长率_第4张图片
 

 报表调用集算器的方法和调用存储过程一样,比如将本脚本保存为AnnulaRate.dfx,则在Jasper的SQL设计器中可以用call AnnulaRate ()来调用并传入参数。

你可能感兴趣的:(集算器,Jasper,交叉报表,增长率)