【问题标题】:How can I sum in group by type?如何按类型汇总?
【发布时间】:2016-06-11 22:43:36
【问题描述】:

我想创建一个 Jasper 模板,它提供以下输出:

2016-01-01
     Category         Descritpiton               Income
     --------         ------------               ------
            A         ...                        1230
            B         ...                        1000
            A         ...                         100
            C         ...                        2500
            B         ...                          10
            A         ...                          10
            A         ...                           5
    +--------------------------------------------------+
    Sum
            A                                    1355
            B                                    1010
            C                                     100

2016-01-02
     Category         Descritpiton               Income
     --------         ------------               ------
            A         ...                         500
            B         ...                         100
            B         ...                         100
            E         ...                        2500
            B         ...                          10
            A         ...                          10
            A         ...                           5
    +--------------------------------------------------+
    Sum
            A                                     515
            B                                     210
            E                                    2500

(more days...)

我有一个 SQL 数据源,其中包含一个包含必要列的表。我可以创建一个报告,其中按天对收入进行分组(我通过一个组实现了这一点,并在 SQL 选择语句中进行了排序)。像这样的:

2016-01-01
     Category         Descritpiton               Income
     --------         ------------               ------
            A         ...                        1230
            B         ...                        1000
            A         ...                         100
            C         ...                        2500
            B         ...                          10
            A         ...                          10
            A         ...                           5

2016-01-02
     Category         Descritpiton               Income
     --------         ------------               ------
            A         ...                         500
            B         ...                         100
            B         ...                         100
            E         ...                        2500
            B         ...                          10
            A         ...                          10
            A         ...                           5

(more days...)

但我无法在每天结束时计算总和。有没有办法实现报告中给定的按类别总和部分?

【问题讨论】:

  • 执行另一个 sql 语句来获得总和值是一种可接受的解决方案吗?
  • 不,我想避免创建第二个 sql。
  • 我会给你一个答案,但避免第二个 sql 会迫使你开发一个 java 类(或者固定的类别总是 A、B、C?)
  • 类别未修复。我对Java类没有问题,谢谢!
  • 我用不同的解决方案向您发布了一个答案,另一个可能对其他用户有帮助...您的关键问题是,如果您没有进行“正常”设计,您将需要一个新的数据源为您的总和表。如果您不喜欢重新查询(这将相当简单),您需要在报告运行时存储值并从您的 java 类请求数据源

标签: jasper-reports


【解决方案1】:

在 jasper 报告中分组时,您将可以访问两个新乐队,groupHeadergroupFooter

您需要在groupFooter中添加求和表。

正常设计(重新设计报告以避免需要新的数据源,还按类别分组)

2016-01-01
     Category         Description               Income
     --------         ------------               ------
            A         ...                        1230
            A         ...                         100 
     +--------------------------------------------------+
    Total sum category A                         1335

            B         ...                        1000

           ..........................................
    Total sum  all                               6000

如果这不是一个选项,您将需要为总表创建一个新数据源

方案一(重新查询):

groupFooter 中添加subreportjr:table 并使用日期作为参数重新查询您的数据库(按类别和总和值分组)

解决方案 2(创建 jasper 报告脚本,JRDefaultScriptlet

创建一个扩展JRDefaultScriptlet 类的java 类,该类在填充报告时存储和汇总您的值。在解决方案 1 中调用 scriptlet 以获取例如 JRBeanCollectionDataSource 可用作数据源来填充您的总和表。

【讨论】:

  • 感谢您的回复,我认为重新查询对我来说是最不痛苦的解决方案。
猜你喜欢
  • 2017-09-08
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
相关资源
最近更新 更多