我正在使用 SpagoBI,并且正在尝试使用可选参数创建报告。我对 beforeOpen() 脚本有疑问。这是查询。
select C."CUSTOMERNAME", C."CITY", D."YEAR", P."NAME"
from "CUSTOMER" C, "DAY" D, "PRODUCT" P, "TRANSACTIONS" T
where C."CUSTOMERID" = T."CUSTOMERID"
and D."DAYID" = T."DAYID"
and P."PRODUCTID" = T."PRODUCTID"
and C."REGION" in (?)
和脚本
if (params["cityparam"].value != null){
this.queryText = this.queryText + "and C.\"CITY\" in ( ?,'" +params["cityparam"].value + "')";
}
else{
var str = reportContext.getParameterValue("regionparam");
q3 = this.queryText + "and C.\"CITY\" in (?,( select \"CUSTOMER\".\"CITY\" from \"CUSTOMER\" where \"CUSTOMER\".\"REGION\" in ('"+ str +"')))";
this.queryText =q3;
}
我有 2 个参数,regionparam 和 cityparam,第二个是可选的。我正在尝试以这种方式修改查询,即当未设置 cityparam 时,我将 C."CITY" 与所选区域中的所有可能值进行比较。生成的查询在我的 PGadmin 中工作。但是SpagoBI工作室存在问题。它说:
子查询返回超过 1 个值。这是不允许的
有没有 BIRT 高手?我会很高兴的帮助。谢谢。