我需要一个报告,用户必须选择2个参数。第一个参数包含年份(2017年,2016年......),第二个参数包含ID流程。根据用户选择的进程,SQL语句将是一个或另一个。参数year是第二个参数中包含的SQL的WHERE子句的一部分。
所以我的报告包含2个参数(param_year
,Indicador
)。 Query参数使用表数据源完成,其中IDs列包含SQL语句,Values列包含用户必须选择的文本。
所以我接下来要做的是set ${Indicador}
作为我对数据库所做的JDBC连接中的SQL语句。这是报告我的SQL错误
“查询失败:$ {Indicador}。
任何建议将不胜感激。提前谢谢。
答案 0 :(得分:0)
您需要Pentaho Data Integration来执行此类动态查询
答案 1 :(得分:0)
如果两个查询的表结构(输出列)相同,则可以将它们放在一个带有UNION ALL的大SQL语句中,并将每个查询放入“WHERE $ {Indicador} = ValueToRunThisQuery”。
优化器应该足够聪明,知道未选择的子查询将返回零行,甚至不运行它。如果一个查询的列数较少,则可以提供一些空列,但填充列的数据类型必须相同。
如果两个查询之间的输出表结构不同,则它们应该位于不同的数据源中,甚至是报告中。
SELECT ID, BLA, BLA, BLA, ONLY_IN_A
FROM TABLE A
WHERE ${Indicador} = "S010"
UNION ALL
SELECT ID, BLA, BLA, BLA, NULL
FROM TABLE B
WHERE ${Indicador} = "S020"
答案 2 :(得分:0)