我看了一遍,如果可能的话,似乎找不到任何东西,所以我去了这里。无论如何,这是我的问题。
我有一个查询,计算每月特定群体的平均调查分数,输出如下:
GRP1 71.2
GRP2 77.2
GRP3 81.6
现在我有另一个表格,其中包含基于这些值得到点值的标准,例如:
min_value max_value point
95 100 80
85 94 60
75 84 40
65 74 20
基本上意味着95-100应该获得80分等等。这是动态的(我的应用程序中的用户可以更改这些值或添加/删除行)所以我想在第一个表的标签上编写脚本,查找第二个表,将其与最小值和最大值进行比较。但是我环顾四周,我没有看到如何做到这一点。我想到了以某种方式将数据集转换为可以循环的对象列表,因此我可以将值与每行进行比较,但我不知道如何执行此操作。
编辑:我发现了一种方法,但它涉及我将第二个表连接到第一个表,然后设置visibility属性,以便不显示得分不在最小值和最大值之间的行。但是我对这个效率有疑问所以我想知道是否有更好的方法。答案 0 :(得分:1)
您不必显示第二张表中的数据,对吗?该表仅定义了值边界。如果是这样,您可以通过向绑定到第二个数据库表的报表添加不可见表,从而在javascript对象中从第二个表预加载数据。该表项必须放在显示第一个表中数据的报表项之前。
你必须在Javascript中编程一点:
答案 1 :(得分:0)
在“编辑数据集”中创建“计算列”
这是我用于类似问题的JavaScript的例子,但我将数字转换为单词字符串。
if (row["Change Assessment"]==1){
"Very High"
}else if (row["Change Assessment"]==2){
"High"
}else if (row["Change Assessment"]==3){
"Low"
}else if (row["Change Assessment"]==4){
"Very Low"
}else {
"Undefined"}
答案 2 :(得分:0)
最有效和最简单的方法是在数据库的存储过程中执行此操作:我们将汇总的调查按月存储在临时表中,然后我们将其连接到min-max表。
对于BIRT中的解决方案,我们可以创建一个连接数据集: