1

我有一个类似这样的 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 行?

例如

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

这实际上只是我正在努力解决的线路限制,其余的工作都很好。

4

2 回答 2

1

I found a way to do it, if anyone can come up with a more elegant answer I would be happy to see it, as this feels a bit hacky!

for each item in detail band:

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

where userGroup is the field I am grouping by. I only seemed to need the isRemoveLineWhenBlank attribute for the first element.

于 2012-12-19T06:32:22.523 回答
0

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

于 2013-05-20T08:15:05.217 回答