FROM 子句中的 Eclipse BIRT 输入参数

Eclipse BIRT input parameter in FROM clause

我正在使用 eclipse birt 来制作我的报告。 我的目标是采用输入参数,选择不同的 table 用于我的数据集。我知道我可以使用这样的东西:

id = ?

在我的 WHERE 子句中。但我想完成类似的事情:

FROM CONCAT('tablexyz',?)

所以我可以为 tables tablexyz17tablexyz18tablexyz19 等做我的报告。我试过做这样的事情:

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);