iReport(4.0.1)中包含各种字段的报告包括:$F{value}
(Integer)和$F{created_at}
。条件总和(变量)
我想计算的变量,将给予:
- 的
$F{value}
之时$F{created_at}
是一个给定的日期 - 的
$F{value}
之时,之前是$F{created_at}
给定日期
任何想法如何做到这一点?
iReport(4.0.1)中包含各种字段的报告包括:$F{value}
(Integer)和$F{created_at}
。条件总和(变量)
我想计算的变量,将给予:
$F{value}
之时$F{created_at}
是一个给定的日期$F{value}
之时,之前是$F{created_at}
给定日期任何想法如何做到这一点?
你将不得不使用两个不同的变量来做到这一点。对于你的变量,在'变量表达式'中使用类似的东西。 Date类也有一个after()函数。如果表达式的计算结果为真,$ F {value}将被添加,否则将会添加0。
$ F {created_at} .before($ P {givenDate})? $ F {value}:0
要使用变量求和,您需要将计算类型更改为“Sum”。默认的重置类型,报表将在整个报表中对值进行求和。其他重置类型在报告的不同部分(列,页面或组)上以相同方式工作。
下面是案 “之前的” XML:
<variable name="sumValueCreatedBefore" class="java.lang.Integer" calculation="Sum"> <variableExpression><![CDATA[F{created_at}.before($P{givenDate}) ? $F{value} : 0]]></variableExpression> </variable>
存在对另一种解决方案:编写子查询中选择statment
像
选择 (从表名称中选择总和(字段名称)作为余额
from tablename 其中条件
将计算类型设置为“总和”的窍门。 – LapinLove404 2011-03-18 08:36:00