Использование CASE в операторе WHERE, когда параметр имеет несколько значений

У меня есть проблема, которая, я думаю, связана с наличием параметра с несколькими значениями.

В моей TblActivity есть два поляTblActivity.ActivityServActId а такжеTblActivity.ActivityContractId который я хочу включить в мое заявление WHERE.

Фильтрация по ним необязательна. Если пользователь выбирает «Да» для параметра@YESNOActivity, то я хочу отфильтровать запрос, ища строки, гдеTblActivity.ActivityServActId соответствует одному из параметров в параметре@ServiceActivity.

То же самое касается@YESNOContract, TblActivity.ActivityContractId а также@Contract соответственно

Мне удалось добраться до этого:

WHERE
(CASE WHEN @YESNOActivity = 'Yes' THEN TblActivity.ActivityServActId ELSE 0 END) 
IN (CASE WHEN @YESNOActivity = 'Yes' THEN @ServiceActivity ELSE 0 END)  

AND (CASE WHEN @YESNOContract = 'Yes' THEN TblActivity.ActivityContractId ELSE 0 END) 
IN (CASE WHEN @YESNOContract = 'Yes' THEN @Contract ELSE 0 END)

Однако, хотя этот код работает нормально, если в параметре выбрано только одно значение@ServiceActivity или же@Contract, как только у меня есть более одного значения в этих параметрах, я получаю ошибку:

Incorrect syntax near ','.
Query execution failed for dataset 'Activity'. (rsErrorExecutingCommand)
An error has occurred during report processing. (rsProcessingAborted)

Кто-нибудь может увидеть, что я делаю не так? Я мог бы понять это, если бы в операторе WHERE было = вместо IN, но я не могу понять это.

Использование SQL Server 2008 и SSRS 2008-r2

Ответы на вопрос(3)

Ваш ответ на вопрос