BIRT 报告 - 在 SQL 查询中多次使用相同的参数

问题描述 投票:0回答:2

我有这个 where 子句:

WHERE p.ROLE = 'doctor'
AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING('01.01.2012', 1, 2))
AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING('01.01.2012', 4, 2))
AND (p8.PA_Name='Event_Year_From' AND P8.PA_Value>=SUBSTRING('01.01.2012', 7, 4)))
AND ((p9.PA_Name='Event_Day_To' AND P9.PA_Value<=SUBSTRING('30.12.2012', 1, 2))
AND (p10.PA_Name='Event_Month_To' AND P10.PA_Value<=SUBSTRING('30.12.2012', 4, 2))
AND (p11.PA_Name='Event_Year_To' AND P11.PA_Value<=SUBSTRING('30.12.2012', 7, 4)))

在上面之后我有一个

union all
,最后我有另一个与上面完全相同的
WHERE
子句。

在 BIRT 中,可以传递参数,并且您必须在 SQL 查询中需要传递参数的位置插入

?
。如您所见,我有一个“开始”日期和一个“结束”日期,它们将通过“用户输入”传递。现在我的问题是我不知道如何将 SDate 参数传递给所有 start dates 以及如何将 EndDate 参数传递给所有
end dates
我的问题有解决办法吗?
    
我通过从参数创建包含单行的表并将其附加到报告查询来解决这个问题,如下所示:

,(select ? SDate, ? EDate) params WHERE p.ROLE = 'doctor' AND((p6.PA_Name='Event_Day_From' AND p6.PA_Value>= SUBSTRING(params.SDate, 1, 2)) AND (p7.PA_Name='Event_Month_From' AND p7.PA_Value>=SUBSTRING(params.SDate, 4, 2)) AND (p8.PA_Name='Event_Year_From' AND P8.PA_Value>=SUBSTRING(params.SDate, 7, 4))) AND ((p9.PA_Name='Event_Day_To' AND P9.PA_Value<=SUBSTRING(params.EDate, 1, 2)) AND (p10.PA_Name='Event_Month_To' AND P10.PA_Value<=SUBSTRING(params.EDate, 4, 2)) AND (p11.PA_Name='Event_Year_To' AND P11.PA_Value<=SUBSTRING(params.EDate, 7, 4)))

eclipse birt
2个回答
1
投票

**我目前在 PostgreSQL 数据库上使用此方法。


[编辑]

BIRT 使用普通 JDBC,但它不支持“命名参数”,所以你不能写:


1
投票

这会出错。 其他选项是使用属性绑定或 JavaScript 构建查询并在执行之前替换其中的部分内容。

请参阅此示例报告
 

某些数据库还支持

WITH

语法来为 ? 参数分配别名。

这篇博文

解释了如何使用它。

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.