Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择1个参数时,如何更改此查询以搜索多个值?_Sql_Oracle_Birt - Fatal编程技术网

Sql 选择1个参数时,如何更改此查询以搜索多个值?

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,

我有一个报告(BIRT),其中用户为其中一个参数选择一个字符串值。然后,该参数的值将用于其中一个数据集查询。我想要完成的是,当选择一个特定的值时,我需要报告在查询中搜索1-3个其他预定义的值。例如,如果用户选择F-MAC,我希望数据集返回类别为F-MAC以及C-CDB、F-FMB和M-MAC的所有结果。如果他们选择F-伤害,数据集应返回类别为F-伤害和M-伤害的所有结果

参数Categories是静态的,有4个值可用

以下是查询:

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
,则将匹配传统表中的name
F-DAMAGE和M-DAMAGE

我在beforeOpen脚本中使用this.queryText=this.queryText.replace为if/else语句