Jasper Reports - 限制组中的行数

时间:2012-12-19 03:27:54

标签: java jasper-reports

我有一个类似这样的CSV数据源:

User,Site,Requests
user01,www.facebook.com,54220
user01,plusone.google.com,2015
user01,www.twitter.com,33564
user01,www.linkedin.com,54220
user01,weibo.com,2015
user02,www.twitter.com,33564
user03,www.facebook.com,54220
user03,plusone.google.com,2015
user03,www.twitter.com,33564

在报告中,我想显示每个用户的前3行(最大值),而其他行只会显示组总数。如何将报告限制为每组仅打印3行?

e.g

User     Site                Requests
user01 | www.facebook.com    |  54220
         plusone.google.com  |   2015
         www.twitter.com     |  33564
                             | 146034
user02 | www.twitter.com     |  33564
                             |  33564
user03 | www.facebook.com    |  54220
user03 | plusone.google.com  |   2015
user03 | www.twitter.com     |  33564
                             |  89799

这真的只是我正在努力的限制线,其余的工作正常。

2 个答案:

答案 0 :(得分:1)

我找到了一种方法,如果有人能想出一个更优雅的答案,我会很高兴看到它,因为这感觉有点hacky!

详细信息中的每个项目:

<reportElement...  isRemoveLineWhenBlank="true">
     <printWhenExpression><![CDATA[$V{userGroup_COUNT} < 4]]></printWhenExpression>
</reportElement>

其中userGroup是我要分组的字段。我似乎只需要第一个元素的isRemoveLineWhenBlank属性。

答案 1 :(得分:0)

您可以考虑使用子报表,查询主报表中的分组字段,然后将分组字段作为参数传递到子报表中;这种方法的优点是避免报表引擎实际循环遍历所有不需要的行(尽管它们未显示)并花费不必要的服务器到服务器或服务器到客户端带宽,尤其是当返回的数据集很大时< / p>