Usando CASE na instrução WHERE quando o parâmetro possui vários valores

Eu tenho um problema que acho que está relacionado a ter um parâmetro de valor múltiplo.

Na minha TblActivity existem dois camposTblActivity.ActivityServActId eTblActivity.ActivityContractId que eu quero incluir na minha declaração WHERE.

A filtragem por estes é opcional. Se o usuário selecionar 'Sim' para o parâmetro@YESNOActivity, desejo filtrar a consulta procurando linhas em queTblActivity.ActivityServActId corresponde a uma das opções no parâmetro@ServiceActivity.

O mesmo vale para o@YESNOContract, TblActivity.ActivityContractId e@Contract respectivamente

Eu consegui chegar a isso:

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)

No entanto, embora esse código funcione bem se houver apenas um valor selecionado no parâmetro@ServiceActivity ou@Contract, assim que tiver mais de um valor nesses parâmetros, recebo o erro:

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

Alguém pode ver o que estou fazendo de errado? Eu poderia entender se tivesse um = em vez de IN na instrução WHERE, mas não conseguisse descobrir isso.

Usando o SQL Server 2008 e o SSRS 2008-r2

questionAnswers(3)

yourAnswerToTheQuestion