BIRT报表中实现过滤和分组

所有聚集函数都允许使用两个可选参数来指示过滤和分组: 

Total. <聚集函数> ( ..., filter, group ) 

关于过滤器参数 
过滤器参数提供了一个布尔表达式,对于每一行,BIRT 都会对该表达式进行求值。在计算聚集时,BIRT 仅考虑与该过滤器匹配的行。例如,报告可以对活动客户的贷记限额进行求和,以确定最大贷记风险。 

此表达式是在数据转换阶段执行的。它可以访问行中的列、参数、用户定义的函数以及上述上下文描述中定义的其他资源。例如: 

Total.sum( row["CreditLimit"], row["Active"] == &apos;Y&apos; ); 

指定过滤器参数 null、未定义过滤器参数或者指定 Total.NO_FILTER,都表示未提供过滤器。如果应用程序未提供过滤器,则过滤器缺省为未定义。如果提供了组参数,则必须提供 null 或 Total.NO_FILTER 以指示不进行过滤。 

关于组参数 
报告经常需要显示当前分组级别的总计。例如,假定一个报告按客户和订单进行分组,并且详细信息记录表示订单中的行项。每个行项都有单位价格和数量,如以下聚集函数所示: 

Total.sum( row["price"] * row["quantity"] ) 

此聚集函数对当前组的金额进行求和。如果将此聚集放在订单组脚中,则它将显示该订单的行项之和。如果将其放在客户组脚中,它就会显示该客户的所有订单的所有行项之和。并且,如果将其放在报告组脚中,它就会显示所有客户的所有行项之和。 

但是,应用程序有时需要访问另一分组级别的总计。例如,您可能想了解一个订单的总金额在该客户所有订单中所占的百分比。在这种情况下,必须访问除当前组以外的组的总计。可以使用分组参数来实现此目的: 

Total.sum( row.CreditLimit, null, "Customer" ); 

组参数可以是下列其中一项: 

Null,这表示当前分组级别。 
当前分组级别或更高分组级别的组的名称。此名称是报告设计中指定的名称。 
当前分组级别或更高分组级别的组的组键表达式。 
组级别的数字索引。0 表示整体总计,1 表示最高级别的组,依此类推。 
相对组索引:-1 表示比此组高一级的组,-2 表示比此组高两级的组,依此类推。 
特殊名称“Overall”,此名称引用数据集的整体总计。也可以使用静态属性 Total.OVERALL。 
下列示例演示了三类组参数: 

Total.sum( row["myCol"] null, null ); // 当前组 
Total.sum( row["myCol"], null, "Customer" ); // 按名称 
Total.sum( row["myCol"], null, "row[`custID']" ); // 按组键 
Total.sum( row["myCol"], null, 1 ); // 按组索引 
Total.sum( row["myCol"], null, "Overall" ); // 整体总计 
Total.sum( row["myCol"], null, 0 ); // 整体总计 

使用分组参数时,必须提供过滤器参数。如果不需要过滤器,请指定 null 作为过滤器值。不能将组索引括在引号中,它必须是数字。即,1 表示级别为 1 的组,而 "1" 表示名为 "1" 的组。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值