Sql server SQL SERVER中带有IN子句的CASE语句

Sql server SQL SERVER中带有IN子句的CASE语句,sql-server,case,Sql Server,Case,如何在WHERE条件和in子句中使用CASE语句?我正在尝试以下查询及其给定语法错误 SELECT * FROM tblCustomers WHERE custCode = 'CST1' AND CASE @accountType WHEN 'Doemstic' THEN city IN ('hokkaido','tokyo') ELSE city IN ('mumbai') END 此语句在“IN”附近出现语法错误 我正在使用SQL Server 20

如何在WHERE条件和in子句中使用CASE语句?我正在尝试以下查询及其给定语法错误

SELECT * FROM tblCustomers
WHERE custCode = 'CST1'
AND   CASE @accountType WHEN 'Doemstic'
      THEN city IN ('hokkaido','tokyo')
      ELSE city IN ('mumbai')
      END
此语句在“IN”附近出现语法错误


我正在使用SQL Server 2012

当我不得不做类似的事情时,我尝试用另一种方式编写它:

SELECT * FROM tblCustomers
WHERE 
custCode = 'CST1'
AND 
(
    (
        @accountType = 'Doemstic'
        AND 
        city IN ('hokkaido','tokyo')
    )
    OR
    (
        @accountType <> 'Doemstic'
        AND 
        city IN ('mumbai')
    )
)
从TBL客户中选择*
哪里
custCode='CST1'
及
(
(
@accountType='Doemstic'
及
位于(‘北海道’、‘东京’)的城市
)
或
(
@帐户类型“Doemstic”
及
孟买市
)
)
如果有人有更好的想法,请分享

检查此项