如何根据iReport中的不同条件对值进行求和

时间:2013-03-17 11:15:36

标签: jasper-reports ireport

我有3列,如下所示。

Bucket      Amt     Fixed Amount
1           10       100
2           20       200
3           30       300
4+          40       400

我想将第2桶到第4桶以及第3桶到第4桶的值相加,即我的最终表格应如下所示

Bucket      Amt     Fixed Amount
1           10       100
2           20       200
3           30       300
4+          40       400
2-4+        90       900
3-4+        70       700

我创建了2个变量“2-4 +”和“3-4 +”。 将计算分配为“总和” 但是如何为相同的表达式编写表达式,它将根据存储桶对amt和固定数量的值求和?我可以使用条件语句吗? 即,对于第一个变量2-4 +,将桶的值和2到4+之间的桶的固定量相加。类似地,对于第二个变量。

任何建议将不胜感激。 谢谢!

2 个答案:

答案 0 :(得分:0)

如果每个存储桶都是查询中的输出行,并且您知道您需要执行的唯一计算是“2-4 +”和“3-4 +”,您可能需要考虑将计算结构化为你的查询输出。

或者 - 您可以尝试分组。像往常一样在细节带中显示水桶1,2,3,4 +。创建三个变量来保存桶2,3,4 +的结果(计算=无,重置类型=组,重置组=桶,值表达式= $ F {桶})。然后创建另外两个变量来保存“2-4 +”和“3-4 +”的结果(计算=无,值表达式= $ V {bucket_2} - $ V {bucket_4}和$ V {bucket_3} - $ V {bucket_4})。确保在计算变量之前声明保存存储桶结果的变量。在组页脚中显示计算变量的输出。

答案 1 :(得分:0)

对于2-4 +,创建一个新变量并将其变量表达式设置为:

$V{REPORT_COUNT} > 1 ? $F{Amt} : 0

对于3-4 +,创建一个新变量并将其变量表达式设置为:

$V{REPORT_COUNT} > 2 ? $F{Amt} : 0