Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于BIRT中的另一个表更改表值_Java_Mysql_Birt - Fatal编程技术网

Java 基于BIRT中的另一个表更改表值

Java 基于BIRT中的另一个表更改表值,java,mysql,birt,Java,Mysql,Birt,我找遍了所有地方,如果可能的话,似乎找不到任何东西,所以我来到这里。不管怎样,这是我的问题 我有一个查询,用于计算特定群体每月的平均调查分数,结果如下: GRP1 71.2 GRP2 77.2 GRP3 81.6 min_value max_value point 95 100 80 85 94 60 75 84 40 65

我找遍了所有地方,如果可能的话,似乎找不到任何东西,所以我来到这里。不管怎样,这是我的问题

我有一个查询,用于计算特定群体每月的平均调查分数,结果如下:

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
现在,我有了另一个表,其中包含了基于这些条件获取分值的标准,例如:

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分,等等。这是动态的(我的应用程序中的用户可以更改这些值或添加/删除行),因此我考虑在第一个表的标签上编写一个脚本,查找第二个表,将其与最小值和最大值进行比较。然而,我环顾四周,没有看到任何关于如何做到这一点的信息。我想把数据集转换成一个可以循环的对象列表,这样我就可以比较每一行的值,但我不知道怎么做

编辑:我发现了一种方法,但它涉及到将第二个表连接到第一个表,然后设置可见性属性,以便不显示分数不在最小值和最大值之间的行。但是,我对这种方法的效率有疑问,所以我想知道是否有更好的方法。

在“编辑数据集”中创建一个“计算列”

下面是我在模拟问题中使用的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"}
在“编辑数据集”中创建“计算列”

下面是我在模拟问题中使用的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"}

最有效、最简单的方法是在数据库的存储过程中执行此操作:我们将按月汇总的调查存储在临时表中,然后将其连接到最小-最大表

仅对于BIRT中的解决方案,我们可以创建一个连接的数据集:

  • 向两个现有数据集中的每个数据集中添加一个虚拟列,其值始终设置为“1”(或任何您喜欢的常量值…)
  • 在这两个数据集之间创建一个新的“连接数据集”,并使用我们虚构的列链接它们,从而得到一个“笛卡尔乘积”
  • 在联接数据集的“过滤器”选项卡中,添加一个新过滤器,以选择调查分数在最小值和最大值之间的行
  • 就这样
最有效、最简单的方法是在数据库的存储过程中执行此操作:我们将按月汇总的调查存储在临时表中,然后将其连接到最小-最大表中

仅对于BIRT中的解决方案,我们可以创建一个连接的数据集: