2011-06-02 362 views
0

我在查询中使用“CASE WHEN”为该条件或该条件获取值。我正在收到“缺少正确的辩论”错误。请告诉我哪些查询将被调整。在查询中使用CASE WHEN获取“缺少右括号”错误

SELECT * FROM MNDTRY_NODE_COND 
WHERE (MNDTRY_NODE_COND.OPTN_CD IN 
    CASE WHEN EXISTS 
    (SELECT * FROM MNDTRY_NODE_COND 
     WHERE MNDTRY_NODE_COND.OPTN_CD IN ('GAN','4BB','RFF','U32','VVT','OAP')) 
    THEN ('GAN','4BB','RFF','U32','VVT','OAP') 
    ELSE ('*') END); 
+0

什么SQL实现? – JNK 2011-06-02 20:09:23

+0

你究竟想要做什么? – 2011-06-02 20:13:41

+0

我不认为你被允许去做'Where Somecolumn in Case ... End'。 – 2011-06-02 20:15:54

回答

2
SELECT * 
FROM MNDTRY_NODE_COND 
WHERE OPTN_CD IN ('GAN','4BB','RFF','U32','VVT','OAP') 
union all 
SELECT * 
FROM MNDTRY_NODE_COND 
WHERE OPTN_CD = '*' 
and not exists (SELECT * FROM MNDTRY_NODE_COND WHERE OPTN_CD IN ('GAN','4BB','RFF','U32','VVT','OAP')) 
+0

@ RedFilter,我的场景是验证表是否给定的输入值(这里的输入值是'GAN','4BB','RFF','U32','VVT','OAP')是否有记录。如果可用,则将给定输入值分配给条件或将“*”值分配给条件。所以最终的结果集应该是''GAN','4BB','RFF','U32','VVT','OAP'值或'*'值。不是两者的结合! – user781453 2011-06-02 20:32:25

+0

@ use781453好,因为这是我的查询所做的。 – RedFilter 2011-06-02 20:38:09

+0

那是正确的你的查询只给出正确的结果集。还有一个问题,请查看我的查询,我想为(GAN','4BB','RFF','U32','VVT','OAP')或('*')赋值条件“MNDTRY_NODE_COND.OPTN_CD”基于数据可用方案。怎么做?。因为我只需要将解决方案应用于另一个复杂查询的条件部分。 – user781453 2011-06-02 21:04:59