2014-06-19 151 views
0

如何在IN WHERE條件中使用CASE語句和IN子句?我正在嘗試下面的查詢和它給出的語法錯誤。在SQL SERVER中使用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的

+1

檢查此問題http://stackoverflow.com/questions/1123 2267 /使用-case語句-內,在從句 –

回答

1

時,我不得不做一些類似的語法錯誤,我嘗試寫以另一種方式:

SELECT * FROM tblCustomers 
WHERE 
custCode = 'CST1' 
AND 
(
    (
     @accountType = 'Doemstic' 
     AND 
     city IN ('hokkaido','tokyo') 
    ) 
    OR 
    (
     @accountType <> 'Doemstic' 
     AND 
     city IN ('mumbai') 
    ) 
) 

如果有人有更好的主意,請分享