条件和(变量)
iReport (4.0.1) 中包含各种字段的报表包括:$F{value}
(整数)和 $F{created_at}
。
我想计算给出的变量:
- 当
$F{created_at}
在给定日期之前时$F{value}
的总和 $F{value}
当$F{created_at}
在给定日期之后时
知道如何做到这一点吗?
A report in iReport (4.0.1) with various fields includes: $F{value}
(Integer) and $F{created_at}
.
I'd like to calculate variables that would give:
- the sum of
$F{value}
when$F{created_at}
is before a given date - the sum of
$F{value}
when$F{created_at}
is after a given date
Any idea how this could be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您将必须使用两个不同的变量来执行此操作。对于您的变量,请在“变量表达式”中使用类似的内容。 Date 类还有一个 after() 函数。如果表达式计算结果为 true,则添加 $F{value},否则添加 0。
$F{created_at}.before($P{givenDate}) ? $F{value} : 0
要使用变量求和,需要将计算类型更改为“Sum”。默认重置类型,报告将对整个报告的值进行求和。其他重置类型的工作方式与报表的不同部分(列、页面或组)相同。
以下是“之前”情况的 XML:
You will have to use two different variables to do this. For your variables, use something like this in the 'Variable Expression'. The Date class also has an after() function. If the expression evaluates to true $F{value} will be added, otherwise 0 will be added.
$F{created_at}.before($P{givenDate}) ? $F{value} : 0
To use a variable to sum, you need to change the calculation type to "Sum". The default reset type, report will sum values over the entire report. The other reset types work the same way just over different sections of the report (column, page or group).
Here is the XML for the "before" case:
<variable name="sumValueCreatedBefore" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[F{created_at}.before($P{givenDate}) ? $F{value} : 0]]></variableExpression>
</variable>
还有另一种解决方案:在 select 语句中编写子查询,
例如
Select
(select sum(Fieldname) from tablename where dategiven date) 作为 aftersum
from tablename
哪里条件
there is another solution for that : write sub query in the select statment
like
Select
(select sum(Fieldname) from tablename where dategiven date) as aftersum
from tablename
where conditions