占比报表
占比报表
该表的数据集为ds1: SELECT 订单明细.单价,订单明细.数量,订单.货主地区 FROM 订单,订单明细 WHERE 订单.订单ID = 订单明细.订单ID
预览如下:
这是一张比较典型的浮动行(行数不定,动态扩展)的报表,如果要计算占比该怎么办?所谓的占比运算,就是拿每一行的数值除以所有行的合计值,因此,我们要先把合计值算出来,做法是:
1、 在报表最下面追加空白行
2、 在空行B3单元格输入表达式:=sum(B2{});在D3单元格输入表达式:=sum(D2{}),并设置显示格式为:¥#0.00,算出合计值
3、 设计界面截图
4、 预览截图
可以看到合计值出来了,此时我们再加上占比的表达式
5、 在C2单元格输入表达式:=B2/B3,并设置显示格式为:#0.00%
在E2单元格输入表达式:=D2/D3,并设置显示格式为:#0.00%
6、 设计界面截图
7、 预览截图
说明:这是一个比较简单的行间运算例子,该例子要求报表引擎在解析报表时,能够先解析表达式,判断出B2格和D2格的占比表达式用到了B3格和D3格,从而先计算B3格和D3格,然后再计算C2格和E2格。
对于很多引用第三方表达式解析器(如BeanShell)的报表工具来说,就无法智能的判断运算优先级了。因此,对于那类报表工具来说,看起来很简单的占比报表,实现起来却很麻烦。