【问题标题】:How to create multiple chart using single query result data如何使用单个查询结果数据创建多个图表
【发布时间】:2015-07-22 13:00:39
【问题描述】:

我有一个查询返回给我 40 行,每行有 number_of_bugs_closed 和 closed_date。 closed_date 值范围 从五月和六月开始。

现在我必须在 JasperReports 中创建 3 个报告图表

  1. 图表显示每天关闭的错误数量。
  2. 图表显示每周关闭的错误数量。
  3. 图表显示每月关闭的错误数量。

我们可以使用单个查询结果数据创建这 3 个图表,还是创建 3 个不同的查询?

在jasper中可以通过使用一些脚本或其他方式吗?

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    我希望您可以在查询中使用某种日期检查。 像

    5 月和 6 月之间的日期

    改为创建两个参数,例如 $P{TimeCheck}$P{TimeRange}

    其中,$P{TimeCheck}参数将用于时间比较查询和参数$P{ TimeRange} 将用于导出参数 $P{TimeCheck} 的值。为不同的图表传递不同的 $P{TimeRange}在映射参数时,例如,对于 month 图表 $P{TimeRange}='month',对于图表,$P{TimeRange}='week',对于每天图表,$P{TimeRange}='all'

    参数 $P{TimeCheck} 应具有以下表达式 "$P{TimeRange} == 'week' ? 'date in (startdate or enddate of everyweek)' : $P{TimeRange} == 'month' ? 'date in (startdate or enddate of every month)' : 'date between may and jun'"

    现在在where条件中使用这个参数为where $P!{TimeCheck}

    注意:不要使用主查询。尝试创建数据集并使用查询。

    我希望这能解决您的问题。

    【讨论】:

      【解决方案2】:

      它会更好地为每个图表使用不同的数据集。或者您可以使用相同的数据集,但这将很难开发。您可以通过以下步骤尝试:

      您需要在您的 sql 查询中添加列(例如周数)并计算该列的日期的周数。喜欢 select week(yourdate) 给你周数。

      现在您的数据集中有三列带有周数​​。

      如果您在 Jasper 图表中使用 week_number 作为类别,它将为您提供图表,但其值不匹配。

      原因:jasper 为列 number_of_bugs_closed 添加了值,但也将其除以 week_number。 例如:第一周有两行。然后它会计算它并除以二。

      这意味着您需要另一列(比如 week_number_of_bugs_closed),它是 week_number 和 number_of_bugs_closed 的倍数。

      要计算 week_number 的数量,您需要进行一个联接,该联接将为您提供该特定周的总天数。

      您可以参考下面显示查询结构的查询。

      select a.*,b.week_count, week_number_of_bugs_closed * b.week_count as week_value from
      (select xyz.number_of_bugs_closed , xyz.closed_date ,week(closed_date)         as week_number from xyz) a
      join 
      (select week(closed_date) week_number, count(*) as week_count from xyz group by week(closed_date) ) b  on 
           a.week_number = b.week_number
      

      现在您可以使用类别 week_number 及其值作为 week_value 到周图表。

      您可以使用类似的方法制作月度图表。

      我希望我能够解释这些概念。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 2016-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多