Using CASE in WHERE-Anweisung, wenn der Parameter mehrere Werte hat

Ich habe ein Problem, das sich meiner Meinung nach auf einen Parameter mit mehreren Werten bezieht.

n meiner TblActivity gibt es zwei FelderTblActivity.ActivityServActId undTblActivity.ActivityContractId, das ich in meine WHERE-Anweisung aufnehmen möchte.

as Filtern nach diesen ist optional. Wenn der Benutzer 'Ja' für den Parameter @ wäh@YESNOActivity, dann möchte ich die Abfrage filtern und nach Zeilen suchen, in denenTblActivity.ActivityServActId entspricht einer der Optionen im Parameter@ServiceActivity.

Das gleiche gilt für das@YESNOContract, TblActivity.ActivityContractId und@Contract beziehungsweis

Ich habe es geschafft:

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)

Der Code funktioniert jedoch einwandfrei, wenn im Parameter @ nur ein Wert ausgewählt is@ServiceActivity oder@Contract, sobald ich mehr als einen Wert in diesen Parametern habe, erhalte ich den Fehler:

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

ann jemand sehen, was ich falsch mache? Ich könnte es verstehen, wenn ich ein = anstelle von IN in der WHERE-Anweisung hätte, aber dieses nicht herausfinden kann.

Verwenden von SQL Server 2008 und SSRS 2008-r2

Antworten auf die Frage(6)

Ihre Antwort auf die Frage