2014-03-26 113 views
0

的案例陳述我一直在用這個敲打我的頭。在where子句中使用參數

基本...

where.... 
and PaymentType IN CASE WHEN @PmtType = 'B' THEN ('BizPay','PerPay') 
         WHEN @PmtType = 'Z' THEN ('BizPay') 
         WHEN @PmtType = 'P' THEN ('PerPay') 
         ELSE NULL END 

是我後。我已經嘗試重新排列CASE,將它放在括號中,遍佈這裏和谷歌,我只是沒有得到它的工作。任何幫助極大appreacaited。未來的感謝。

+0

可能重複(http://stackoverflow.com/questions/11232267/using-case-statement-inside-in-clause) –

+1

謝謝,我已經閱讀過這個問題,但並不認爲這適用於我的情況。在嘲笑我介紹我已閱讀過的內容之前,我已經採納了您的建議,仔細閱讀並理解了它,並且我認爲我理解了它。再次感謝。 :) – mrbungle

回答

0

您可以使用這樣

and PaymentType =CASE WHEN @PmtType = 'B' THEN 
     CASE WHEN PaymentType IN ('BizPay','PerPay') THEN PaymentType ELSE '-1' END 
        WHEN @PmtType = 'Z' THEN 
         CASE WHEN PaymentType IN ('BizPay') THEN PaymentType ELSE '-1' END       
        WHEN @PmtType = 'P' THEN 
      CASE WHEN PaymentType IN ('PerPay') THEN PaymentType ELSE '-1' END 
        ELSE NULL END 
+0

這幾乎可以工作,但我在('BizPay','PerPay')之間的逗號之間出現語法錯誤 – mrbungle

0

到那裏的人在這裏不知道是我的解決方案[使用CASE語句中的IN子句]的

AND (@PmtType = 'B' and PaymentType in ('BizPay','PerPay')) 
      or (@PmtType = 'Z' and PaymentType in ('BizPay')) 
      or (@PmtType = 'P' and PaymentType in ('PerPay'))