【问题标题】:Using CASE statement compare 3 conditions and have the statements executed使用 CASE 语句比较 3 个条件并执行语句
【发布时间】: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 &gt;= '15-JUL-2019' AND DATE_CLOSED &lt;= '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


【解决方案1】:

CASE 可以在WHERE 中使用,但是 - 语法应该没问题。你的不是。

这是一个示例,它显示了 如何 执行此操作(另外请注意,我将日期文字用于 date_closed;您将其与字符串进行了比较。

select *
from   my_dbsource
where  1=1
and lp_where_rep = case when :lp = 'LIFESHEILD' and :m = 'AP' and :status = 'Processed' then 'P' 
                        when manual_flag = 'P' then 'X'
                        else 'Y'
                   end
and     data_source in ('LIFESHIELD') 
and     date_closed >= date '2019-07-15'
and     date_closed <= date '2019-07-16'

【讨论】:

    【解决方案2】:

    如果您想在WHERE 子句中使用大小写,那么您可以使用如下内容:

    AND (CASE WHEN :LP = 'LIFESHEILD' AND :M = 'AP' AND :STATUS = 'Processed' THEN flag ELSE 'P' END) = 'P'
    AND (CASE WHEN :LP = 'LIFESHEILD' AND :M = 'AP' AND :STATUS = 'Processed' THEN Manual_FLAG ELSE 'P' END) = 'P'
    

    干杯!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2012-11-30
      • 1970-01-01
      • 2018-07-04
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多