我已经尝试计算行所属的某些类别的出现次数(参见
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
最佳答案 你有3个选择:
>有2个子报告,每个订单按颜色和味道选择.并在每个子报告摘要中将它们作为主要总结的一部分.当SQL数据排序时,您可以在iReport中为每个列创建组,并在每个组中对变量进行计数.缺点是您为每个子报告转到DB两次.
>拥有自己的java数据源实现.这就像数据代理不做任何数据转换.只有HashMap计算颜色和味道的出现.然后,作为报告评估“报告”的附加字段从数据源获取此字段并将其包含在报告中.你只去一次DB.
>结合使用print如果表达式和定义的组(颜色,味道)与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顺序
也许这有助于作为概念性的想法