Sql server 2008 where子句中带有参数的Case语句

Sql server 2008 where子句中带有参数的Case语句,sql-server-2008,reporting-services,Sql Server 2008,Reporting Services,我一直在用这个砸我的头 基本上 where.... and PaymentType IN CASE WHEN @PmtType = 'B' THEN ('BizPay','PerPay') WHEN @PmtType = 'Z' THEN ('BizPay') WHEN @PmtType = 'P' THEN ('PerPay') ELSE NULL E

我一直在用这个砸我的头

基本上

where....
and PaymentType IN CASE WHEN @PmtType = 'B' THEN ('BizPay','PerPay')
                        WHEN @PmtType = 'Z' THEN ('BizPay')
                        WHEN @PmtType = 'P' THEN ('PerPay')
                        ELSE NULL END
这就是我想要的。我试着重新安排这个案例,把它放在括号里,在这里和谷歌,我只是没有让它工作。非常感谢您的帮助。以后谢谢。

您可以这样使用

   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

对任何想知道我的解决方案的人来说

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

可能是重复的感谢,我以前读过这个问题,但并不认为它适用于我的情况。在抱怨我提到我已经读过的东西之前,我接受了你的建议,仔细地再读一遍,让它发挥作用,我想我理解了。再次感谢。:)这几乎可以正常工作,但是('BizPay','PerPay')之间的逗号出现语法错误