oracle sql错误案例,然后是Else

oracle sql错误案例,然后是Else,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,Case When then else在where子句中。不确定语法 我想验证第二个表中是否有行,如果有行,则检查另一个条件,这基本上就是我要做的。也许这就是您想要的?如果第二个表中有行,则是否存在第二个: SELECT * FROM FirstTable WHERE RowProcessed = 'N' AND ( CASE WHEN EXISTS(SELECT top 1 FROM SecondTable) THE

Case When then else在where子句中。不确定语法


我想验证第二个表中是否有行,如果有行,则检查另一个条件,这基本上就是我要做的。

也许这就是您想要的?如果第二个表中有行,则是否存在第二个

SELECT * 
FROM   FirstTable
WHERE  RowProcessed = 'N'
AND    (
        CASE
            WHEN EXISTS(SELECT top 1 FROM SecondTable)
            THEN 1
            ELSE EXISTS(
                         SELECT SecondTable.RowProcessed 
                         FROM   SecondTable 
                         WHERE  FirstTable.Key = SecondTable.Key
                         AND    SecondTable.RowProcessed = 'Y'
                       )
        END
       )
AND OtherConditions

Oracle中没有
TOP
。请阅读手册为什么不在您的两个
存在之间使用OR条款?您到底想实现什么?
SELECT * FROM FirstTable
WHERE RowProcessed = 'N'
AND (NOT EXISTS (SELECT 1 from SecondTable)
      OR EXISTS (SELECT 1 FROM SecondTable
                 WHERE FirstTable.Key = SecondTable.Key
                   and SecondTable.RowProcessed = 'Y'))
AND OtherConditions