使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如源数据不符合交叉表的要求,需要转置后再呈现。集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明转置交叉表的实现过程。
数据库表booking汇总着各年度商品的预定数据,有四个字段,包括年份和三种预定状态,部分数据如下:
报表要求呈现指定年份及上一年的预定情况,其中行组有三项,即三种预定状态,列组是年份,测度是当年的预定数据。此外要汇总出指定年份各预定状态的增长率。表样如下:
可以看到,这张报表的难点是:源数据无法直接用于交叉表,汇总列要用相对位置来动态计算。如果能将源数据转置,并将汇总列事先计算出来,则会显著降低难度,比如下面这样:
<