【发布时间】:2019-07-15 12:53:13
【问题描述】:
我有一个要求,我应该从用户那里获取 3 个动态值,并根据它的匹配与存在的值列表进行比较,我需要使用 case 语句将条件添加到 where 子句。
select *
from MY_DBSOURCE
WHERE 1=1
And LP_WHERE_REP = (CASE When :LP = 'LIFESHEILD' AND :M = 'AP' AND :STATUS = 'Processed' THEN flag ='P' and Manual_FLAG = 'P' END)
AND DATA_SOURCE IN ('LIFESHIELD')
AND DATE_CLOSED >= '15-JUL-2019'
AND DATE_CLOSED <= '16-JUL-2019'
【问题讨论】:
-
什么是
LP_WHERE_REP?那是表格中的一列吗?我觉得你正在尝试类似WHERE flag=CASE When :LP = 'LIFESHEILD' AND :M = 'AP' AND :STATUS = 'Processed' THEN 'P END AND Manual_FLAG=CASE When :LP = 'LIFESHEILD' AND :M = 'AP' AND :STATUS = 'Processed' THEN 'P' END AND DATA_SOURCE IN ('LIFESHIELD') AND DATE_CLOSED >= '15-JUL-2019' AND DATE_CLOSED <= '16-JUL-2019' -
其实 LP_WHERE_REP 是我自己的变量,这是不正确的。我正在寻找的是我想比较这 3 个条件(:Lp = 'LIFESHEILD' AND :M = 'AP' AND :P = 'Processed' ) 是动态值,如果它们为真,则 (flag ='P' 和 D_FLAG = 'P') 这 2 个基于条件的选择查询数据必须出现。
标签: oracle oracle-sqldeveloper oracle-apps