FROM 子句中的 Eclipse BIRT 输入参数
Eclipse BIRT input parameter in FROM clause
我正在使用 eclipse birt 来制作我的报告。
我的目标是采用输入参数,选择不同的 table 用于我的数据集。我知道我可以使用这样的东西:
id = ?
在我的 WHERE
子句中。但我想完成类似的事情:
FROM CONCAT('tablexyz',?)
所以我可以为 tables tablexyz17
、tablexyz18
、tablexyz19
等做我的报告。我试过做这样的事情:
SELECT * FROM CONCAT('tablexyz',year)
WHERE year = ?
但是它给了我一个错误。
有什么想法可以实现吗?
您不能为此使用绑定变量。绑定变量旨在提供值(用于 varchar、number、date 或任何表达式),但您正试图更改 table.
但是你可以这样使用:
以适用于 table 之一的方式编写您的查询,例如
select * from tablexyz17
然后,在数据集的 beforeOpen 事件中,像这样更改查询文本(未经测试,但你明白了):
// paramYear is the name of your dataset parameter
var tableName = 'tablexyz' + this.getInputParameterValue("paramYear");
this.query = this.query.replace('tablexyz17', tableName);
我正在使用 eclipse birt 来制作我的报告。 我的目标是采用输入参数,选择不同的 table 用于我的数据集。我知道我可以使用这样的东西:
id = ?
在我的 WHERE
子句中。但我想完成类似的事情:
FROM CONCAT('tablexyz',?)
所以我可以为 tables tablexyz17
、tablexyz18
、tablexyz19
等做我的报告。我试过做这样的事情:
SELECT * FROM CONCAT('tablexyz',year)
WHERE year = ?
但是它给了我一个错误。 有什么想法可以实现吗?
您不能为此使用绑定变量。绑定变量旨在提供值(用于 varchar、number、date 或任何表达式),但您正试图更改 table.
但是你可以这样使用:
以适用于 table 之一的方式编写您的查询,例如
select * from tablexyz17
然后,在数据集的 beforeOpen 事件中,像这样更改查询文本(未经测试,但你明白了):
// paramYear is the name of your dataset parameter
var tableName = 'tablexyz' + this.getInputParameterValue("paramYear");
this.query = this.query.replace('tablexyz17', tableName);