Sql 选择1个参数时,如何更改此查询以搜索多个值?
我有一个报告(BIRT),其中用户为其中一个参数选择一个字符串值。然后,该参数的值将用于其中一个数据集查询。我想要完成的是,当选择一个特定的值时,我需要报告在查询中搜索1-3个其他预定义的值。例如,如果用户选择F-MAC,我希望数据集返回类别为F-MAC以及C-CDB、F-FMB和M-MAC的所有结果。如果他们选择F-伤害,数据集应返回类别为F-伤害和M-伤害的所有结果 参数Categories是静态的,有4个值可用 以下是查询:Sql 选择1个参数时,如何更改此查询以搜索多个值?,sql,oracle,birt,Sql,Oracle,Birt,我有一个报告(BIRT),其中用户为其中一个参数选择一个字符串值。然后,该参数的值将用于其中一个数据集查询。我想要完成的是,当选择一个特定的值时,我需要报告在查询中搜索1-3个其他预定义的值。例如,如果用户选择F-MAC,我希望数据集返回类别为F-MAC以及C-CDB、F-FMB和M-MAC的所有结果。如果他们选择F-伤害,数据集应返回类别为F-伤害和M-伤害的所有结果 参数Categories是静态的,有4个值可用 以下是查询: select WO_WORKORDER, WO_STATUS,
select
WO_WORKORDER,
WO_STATUS,
WO_DATE_COMPLETED,
PH_PHASE,
PH_STATUS,
WO_CATEGORY,
WO_CATEGORY_DESC,
WO_DEPT_DESC,
WO_DEPT_ID,
WO_FACILITY_DESC,
WO_BUILDING_DESC,
FTD_TRAN_TYPE,
FTD_AMOUNT,
FTD_TM_TYPE
from VW_WO_BILLING
where
WO_TYPE = 'F'
and WO_STATUS = 'CLOSED'
and PH_STATUS = 'CLOSED'
and FTD_TRAN_TYPE in ('CW','WX','TW','TP')
and WO_CATEGORY = ?
and
(wo_dept_id = ? or ? = 'ALL')
and TRUNC(WO_DATE_COMPLETED) >= ?
and TRUNC(WO_DATE_COMPLETED) <= ?
and FTD_AMOUNT <> 0
选择
我的工作订单,
WO_状态,
完工日期,
PHU阶段,
博士学位,
WO_类别,
WO_类别描述,
工作部门描述,
WO_部门ID,
工厂名称,
和楼说明,
FTD_传输类型,
FTD_金额,
FTD_TM_型
来自VW_WO_账单
哪里
WO_类型='F'
和WO_状态=‘已关闭’
PHU状态=‘关闭’
和FTD_UTRAN\u类型in('CW','WX','TW','TP')
和WO_类别=?
和
(wo_dept_id=?或?='ALL')
和TRUNC(WO_完成日期)>=?
和TRUNC(WO_DATE_COMPLETED)为组合框选项创建另一个表
组合框表1
Category_ID, Name
1, F-MAC
2, F-DAMAGE
传统类别表2
SubCategory_ID, Category_ID, Name
1 1 F-MAC
2 1 C-CDB
3 1 F-FMB
4 1 M-MAC
5 2 F-DAMAGE
6 2 M-DAMAGE
并更新您的查询
SELECT *
FROM
Table1 T1
INNER JOIN Table2 T2
ON T1.Category_ID = T2.Category_ID
INNER JOIN VW_WO_BILLING A
ON T2.Name = A.WO_CATEGORY
WHERE
Table1.Category_ID = ?
因此,如果组合框中的CATEGORY\u ID=2
,则将匹配传统表中的nameF-DAMAGE和M-DAMAGE
。我在beforeOpen脚本中使用this.queryText=this.queryText.replace为if/else语句