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嗨,你能告诉我为什么我永远得不到结果吗?这有什么不对?