jasper报告计算某些类别的出现次数

时间:2012-11-23 02:03:21

标签: count jasper-reports ireport summary

我已经尝试计算行所属的某些类别的出现次数(参见SQL count occurrences of certain categories that rows belong to

但现在我想知道,如果没有做sql的事情,jasper报告能否做到这一切?单独进行摘要而不给数据库服务器额外的工作(那实际上发生在我身上)?

例如,这可能是我的报告:

name | color | flavor
--------------------------
n1   | green | lemon
n2   | blue  | strawberry
n3   | red   | lemon
n4   | green | lemon
n5   | green | mango
n6   | red   | chocolate
n7   | white | lemon
n8   | blue  | mango
n9   | green | chocolate

这将是我想要的摘要:

colors | occurrences         flavor    | occurences
--------------------         ----------------------
green  |   4                 lemon     |   4
blue   |   2                 strawberry|   1
red    |   6                 mango     |   2
white  |   1                 chocolate |   2

1 个答案:

答案 0 :(得分:2)

你有3个选择:

  1. 有2个子报告,每个订单按颜色和味道选择。并在每个子报告摘要中将它们作为主要总结的一部分。当SQL数据排序时,您可以在iReport中为每个列创建组,并在每个组中对变量进行计数。缺点是您为每个子报告转到DB两次。

  2. 拥有自己的数据源java实现。这就像数据代理不做任何数据转换。只有HashMap计算颜色和味道的出现。然后,作为报告评估“报告”的附加字段从数据源获取此字段并将其包含在报告中。你只去了一次DB。

  3. 如果表达式和定义的组(颜色,味道)与print相关联,则打印if表达式可以与union ALL select语句一起使用:

    选择a,b,c'print_to_detail'作为print_if_field,''作为dummy_field
    结合所有
    选择a,b,c'print_to_group1_summary'作为print_if_field,颜色作为dummy_field的颜色顺序
    结合所有
    选择a,b,c'print_to_group2_summary'作为print_if_field,按颜色排序为dummy_field

  4. 也许这有助于作为概念性的想法。