2011-06-02 359 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