2013-07-11 98 views
0

我嘗試在sql server的where子句中使用case語句並獲取錯誤消息。where子句中的用例語句

WHERE (PRCA.EDLType = 'E') 
AND 
(
NOT 
(
    PRCA.EDLCode IN 
    (
    SELECT EarnCode 
    FROM dbo.udECforUnionRpt 
    WHERE (EDL = 'E') 
) 
) 
) 
AND (PRCM.udMasterCraft IS NOT NULL) 
AND (PRCA.PREndDate BETWEEN @BegPREndDate AND @EndPREndDate) 
AND PRCM.udMasterCraft BETWEEN @BegMasterCraft AND @EndMasterCraft 
AND PRCA.Class BETWEEN @BegClass AND @EndClass 
AND 
(
    CASE WHEN @ExcludePREAPR='Y' THEN UPPER(PRCA.Class) not like upper('%PREAPR%') 
    else PRCA.Class 
) 
END 
) 
ORDER BY PRCA.PRCo 

也許是因爲PRCA.Class有兩個條件?或者我只是不寫CASE聲明權利。

謝謝

+0

什麼是錯誤信息? – StevieG

+0

消息156,級別15,狀態1,過程z_UPSPRUnion_test,行82 關鍵字'like'附近的語法不正確。 –

回答

3

轉儲case語句。使用這個:

AND (UPPER(PRCA.CLASS) not like '%PREAPR%' OR @ExcludePREAPR != 'Y') 
+0

謝謝,它的工作原理 –

+0

最後我用if開始結束並運行兩個單獨的select子句。但是它很有用。感謝您的幫助。 –