Birt-Crosstab与空列

时间:2016-03-07 09:06:36

标签: birt crosstab

所以我是BIRT的初学者,我只是想从我的一个postgres数据库表中获得一个真实的简单报告。

所以我将一个平面表定义为数据源,如下所示:

+----------------+--------+----------+-------+--------+
|      date      | store  | product  | value | color  |
+----------------+--------+----------+-------+--------+
| 20160101000000 | store1 | productA |  5231 | red    |
| 20160101000000 | store1 | productB |  3213 | green  |
| 20160101000000 | store2 | productX |  4231 | red    |
| 20160101000000 | store3 | productY |  3213 | green  |
| 20160101000000 | store4 | productZ |  1223 | green  |
| 20160101000000 | store4 | productK |  3113 | yellow |
| 20160101000000 | store4 | productE |   213 | green  |
| ....           |        |          |       |        |
| 20160109000000 | store1 | productA |   512 | green  |
+----------------+--------+----------+-------+--------+

所以我想在我的birt报告中添加一个表/交叉表,为每个商店创建一个表格(之后是分页符),如下所示:

**Store 1**
+----------------+----------+----------+----------+-----+
|                | productA | productB | productC | ... |
+----------------+----------+----------+----------+-----+
| 20160101000000 |     3120 |     1231 |     6433 | ... |
| 20160102000000 |     6120 |     1341 |     2121 | ... |
| 20160103000000 |     1120 |     5331 |     1231 | ... |
+----------------+----------+----------+----------+-----+
--- PAGE BREAK --- 
....

所以我首先尝试的是:开始使用BIRT的标准CrossTab教程模板。

我定义了DataSource,并创建了一个维度组为' store'的数据立方体。和'产品' ,以及SUM / detail -data的'值'在这个例子中,我只选择了一天。

但结果如下:

+--------+----------+----------+----------+----------+-----+----------+
|        | productA | productC | productD | productE | ... | productZ |
+--------+----------+----------+----------+----------+-----+----------+
| Store1 |      213 |          |     3234 |      897 | ... |     6767 |
| Store2 |      513 |     2213 |     1233 |          | ... |      845 |
| Store3 |       21 |          |          |       32 | ... |          |
| Store4 |      123 |      222 |      142 |          | ... |          |
+--------+----------+----------+----------+----------+-----+----------+

这是因为并非每个商店都会销售所有产品,但交叉表会通过选择所有可用产品来创建列。

所以,我根本不知道如何生成具有不同(但也是动态)列数的动态不同的表。

然后第二步是让日期(天)起作用。

但是,提前感谢每个提示链接到第一个问题; - )

1 个答案:

答案 0 :(得分:0)

您只需添加包含完整数据源的表即可。选择表格和组。按StoreID分组。您可以为每个分组设置分页选项。将after的属性设置为"始终排除last"。

BIRT将添加一个组头。您可以添加多个groupheader行,获得您之后的布局。

对于交叉表,它以类似的方式工作。将交叉表添加到页面并在行和列上设置组的信息并添加摘要后。您可以查看数据。选择交叉表并查看“行区域”属性,选择页组设置并添加新的分页。您可以选择要中断的组,选择您的storeID组并在之后选择:"始终排除最后一个"