jasper报告统计了某些类别的事件



我已经尝试过对行所属的某些类别的出现次数进行计数(请参阅SQL计数行所属某些类别的发生次数)

但现在我想知道,在不做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

您有3个选项:

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

  2. 拥有自己的java数据源实现。这就像一个不进行任何数据转换的数据代理。只有HashMap计数颜色和味道的出现。然后,作为具有报告评估"报告"的附加字段,从数据源获取这些字段,并将它们放在报告中。你只去DB一次。

  3. 与print if表达式和定义的组(颜色、风味)与print if表达的组合可以帮助联合ALL select语句:

    选择a、b、c"print_to_detail"作为print_if_field,选择"作为dummy_field
    联合所有
    选择a、b、c"print_to_group1_summary"作为print_idf_field、color作为dummy_field按颜色排序
    联合所有
    按颜色顺序选择a、b、c"print_to_group2_summary"作为print_if_field,风味为dummy_field

也许这是一个概念性的想法。

最新更新