Usar CASE en la instrucción WHERE cuando el parámetro tiene múltiples valores

Tengo un problema que creo que se relaciona con tener un parámetro de valor múltiple.

En mi TblActivity hay dos campos.TblActivity.ActivityServActId yTblActivity.ActivityContractId que quiero incluir en mi declaración WHERE.

El filtrado por estos es opcional. Si el usuario selecciona 'Sí' para el parámetro@YESNOActivity, luego quiero filtrar la consulta buscando filas dondeTblActivity.ActivityServActId coincide con una de las opciones en el parámetro@ServiceActivity.

Lo mismo vale para el@YESNOContract, TblActivity.ActivityContractId y@Contract respectivamente

Me las arreglé para llegar a esto:

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)

Sin embargo, aunque este código funciona bien si solo hay un valor seleccionado en el parámetro@ServiceActivity o@Contract, en cuanto tengo más de un valor en estos parámetros, aparece el error:

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

¿Alguien puede ver lo que estoy haciendo mal? Podría entenderlo si tuviera un = en lugar de IN en la instrucción WHERE pero no puedo entender esto.

Uso de SQL Server 2008 y SSRS 2008-r2

Respuestas a la pregunta(3)

Su respuesta a la pregunta