Eclipse In Birt-根据子字符串对表中的项进行分组

Eclipse In Birt-根据子字符串对表中的项进行分组,eclipse,birt,Eclipse,Birt,一个我找不到答案的新手问题 我有一个报告,其中包含一个表,其中包含几个具有“时间”列的项。 我想按时间对项目进行分组,以便将同一个月的所有项目分组在一起 为此,我必须从“时间”字符串中提取月/年(格式为“17:22 19/07/09”),并将其用于分组。 我知道如何在Java中实现所有这些,我认为BIRT提供了几种方法来实现这一点,但我无法找到一种简单的方法来实现这一点 如果有一个很好的教程,我很想看看 谢谢 这里的报告参数位(包括日期时间解析)对您有帮助吗 我有一份关于BIRT Exchang

一个我找不到答案的新手问题

我有一个报告,其中包含一个表,其中包含几个具有“时间”列的项。 我想按时间对项目进行分组,以便将同一个月的所有项目分组在一起

为此,我必须从“时间”字符串中提取月/年(格式为“17:22 19/07/09”),并将其用于分组。 我知道如何在Java中实现所有这些,我认为BIRT提供了几种方法来实现这一点,但我无法找到一种简单的方法来实现这一点

如果有一个很好的教程,我很想看看


谢谢

这里的报告参数位(包括日期时间解析)对您有帮助吗


我有一份关于BIRT Exchange DevShare的示例报告,它做的正是这件事。您为它提供一个正则表达式(根据需要简单或复杂),它将使用正则表达式的匹配来创建组


祝你好运

我们的做法如下。在数据集的SQL查询中,我们同时选择(例如)
“char(my_date,iso)”
“left(char(date,iso),7)”
(分别用于
2009-01-05
2009-01
),如下所示:

select
    left(char(my_date,iso),7) as isoyyyymm,
    char(my_date,iso) as isodate,
    otherfield as value
from tbl
order by my_date
然后,在报告中创建表时,第1列应为基于ISOYYMM的分组列,并在表中为该列留空:

  • 标题
  • 组数据线;及
  • 详细数据行
因此,在设计器中,您将得到:

+--------------------------------+-----------+-----------------+
| <Header row>                   | Date      | Value           |
+--------------------------------+-----------+-----------------+
| <Group header row (isoyyyymm)> |           |                 |
+--------------------------------+-----------+-----------------+
| <Detail row>                   | [isodate] | [value]         |
+--------------------------------+-----------+-----------------+
| <Group footer row (isoyyyymm)> |           | Total.sum(      |
|                                |           |   row["value"], |
|                                |           |   null,         |
|                                |           |  "Grp1")        |
+--------------------------------+-----------+-----------------+
如果你想这样做的话,你可以在间隔上分组,但是对于那些可以使用简单字符串的情况,我们选择了最简单的方法。显然,如果您的间隔是一周(或者其他一些不适合简单字符串分析的内容),则需要使用BIRT中内置的间隔分组

在我看来,这方面最好的教程是第187页(第12章)。这对于任何认真的BIRT用户来说都是必须的


这第一点对于任何报表设计器都绝对重要。第二部分涉及更高级的主题,如嵌入式Java和Javascript、报表对象模型和BIRT的底层体系结构。如果您想让您的报告真正精彩,这是必需的。

这可以通过表中的组设置来完成。如何创建组在(顺便说一句,在Google中搜索“birt表组”是第一次点击)。 在这种情况下,您可以这样做:

  • 右键单击该行的行标题 状态组标题和上下文菜单 将显示
  • 从关联菜单中选择“插入” 团体→在下面“组详细信息”对话框 出现了
  • 选择组中的“时间”列 打开字段并在名称中键入时间 场
  • 在间隔中选择“月” 组合框
  • 单击“确定”
这将创建一个分组表,而不需要任何SQL或JS处理

Date         Value
----------   -----

2009-01-01       7
2009-01-08       2
2009-01-15       1
2009-01-22       4
             -----
                14

2009-02-05       2
2009-02-12       0
2009-02-19       0
2009-02-26       1
             -----
                 5