Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 根据开关箱可能的列值使用不同的条件_Sql_Oracle_Plsql_Oracle11g_Oracle10g - Fatal编程技术网

Sql 根据开关箱可能的列值使用不同的条件

Sql 根据开关箱可能的列值使用不同的条件,sql,oracle,plsql,oracle11g,oracle10g,Sql,Oracle,Plsql,Oracle11g,Oracle10g,我有一个查询,我希望根据列中的值使用不同的条件 SELECT * FROM com140 cm WHERE cm.csnstar IN (90) 但问题来了,因为我希望这一切发生 当(135177)中的cm.csnrsncde时我希望执行此条件 AND cm.duedate > (SELECT MAX(e.dte1) FROM events e WHERE e.ispec ='FI

我有一个查询,我希望根据列中的值使用不同的条件

SELECT *
FROM com140 cm
WHERE cm.csnstar IN (90)
但问题来了,因为我希望这一切发生

当(135177)中的
cm.csnrsncde时
我希望执行此条件

AND cm.duedate > (SELECT MAX(e.dte1) 
                         FROM events e 
                         WHERE e.ispec   ='FI560'
                         AND   e.inrtyp  ='RVP'
                         AND   e.trntyp1 = 'RP'
                         AND   e.staevt  = 55 
                         AND   e.dte2  > DATE_1)
但是当(91,98172)中的cm.csnrsncde时,我只想在下面的条件下执行,而不是执行前面的条件

AND cm.duedate> DATE1
请帮帮我。
谢谢。

试试这个
Where
子句

SELECT *
FROM   com140 cm
WHERE  cm.csnstar = 90
        OR ( cm.csnrsncde IN ( 135, 177 )
             AND cm.duedate > (SELECT Max(e.dte1)
                               FROM   events e
                               WHERE  e.ispec = 'FI560'
                                      AND e.inrtyp = 'RVP'
                                      AND e.trntyp1 = 'RP'
                                      AND e.staevt = 55
                                      AND e.dte2 > DATE_1) )
        OR ( cm.csnrsncde IN ( 91, 98, 172 )
             AND cm.duedate > DATE1 ) 
这样行吗

SELECT *
FROM   com140 cm
WHERE  cm.csnstar = 90
AND   ((cm.csnrsncde IN ( 135, 177 )
        AND cm.duedate > (SELECT Max(e.dte1)
                           FROM   events e
                           WHERE  e.ispec = 'FI560'
                           AND e.inrtyp = 'RVP'
                           AND e.trntyp1 = 'RP'
                           AND e.staevt = 55
                           AND e.dte2 > DATE_1) )
        OR (cm.csnrsncde IN (91,98,172)
             AND cm.duedate > DATE1))

您添加的代码应该可以工作

SELECT *
FROM   com140 cm
WHERE  cm.csnstar = 90
AND   ((cm.csnrsncde IN ( 135, 177 )
    AND cm.duedate > (SELECT Max(e.dte1)
                       FROM   events e
                       WHERE  e.ispec = 'FI560'
                       AND e.inrtyp = 'RVP'
                       AND e.trntyp1 = 'RP'
                       AND e.staevt = 55
                       AND e.dte2 > DATE_1) )
    OR (cm.csnrsncde IN (91,98,172)
         AND cm.duedate > DATE1))

在cm.csnstar=90之后,这是否意味着即使条件cm.csnstar=90满足查询返回,您也永远不会得到results@VR46嗨,你能告诉我为什么我永远得不到结果吗?这有什么不对?