【发布时间】:2014-06-13 14:46:28
【问题描述】:
我遇到的问题是:
我有一个表格,其中包含一个数据集 X 的输出,在输出字段中我有一个 COUNT 聚合,它返回一个数字。
我想做的是:在另一个已经有另一个数据集 Y 的表中使用这个数字, 我想要直接由我的聚合 COUNT 处理的最终数字。 在这种情况下,表格的关节没有用,因为它不会返回处理过的“数字”。
【问题讨论】:
标签: java mysql sql report birt
我遇到的问题是:
我有一个表格,其中包含一个数据集 X 的输出,在输出字段中我有一个 COUNT 聚合,它返回一个数字。
我想做的是:在另一个已经有另一个数据集 Y 的表中使用这个数字, 我想要直接由我的聚合 COUNT 处理的最终数字。 在这种情况下,表格的关节没有用,因为它不会返回处理过的“数字”。
【问题讨论】:
标签: java mysql sql report birt
一个聪明的方法是创建一个报告变量来存储数据集X的聚合。例如我们将它命名为aggregationX:
创建变量后,点击表X中的聚合数据->脚本->onCreate
输入这个脚本:
vars["aggregationX"]=this.getValue();
然后,您可以在聚合 X 之后放置的报表元素的所有表达式中使用 vars["aggregationX"]:在数据集 Y 的计算列、表 Y 的数据绑定、过滤器、排序表达式、突出显示表达式、动态文本等中。
【讨论】:
第一条规则:始终为列绑定提供有意义的名称(不仅仅是:“Aggregation”,而是“numRows”或类似名称)!
第二条规则:报告变量是全局变量,因此它们被认为是不好的做法 - 仅当您没有找到任何其他解决方案时才使用它们。
在最常见的情况下,您可以将表(基于数据集)y 放入表 x 的详细信息行中。然后您可以使用语法 row._outer["numRows"] 访问计数。 如果你还需要数据集y中的计数,你可以很容易地将它作为数据集参数传递(使用绑定选项卡中的“参数绑定”按钮)。
如果(出于任何原因)您的布局不允许您将表 y 放在表 x 的详细信息行中,您只需要 Dominique 提供的报表变量解决方案。
【讨论】: