Opération "CASE WHEN" dans une instruction "IN"

Je suis coincé dans une requête MS SQL Server 2012. Ce que je veux, c'est écrire plusieurs valeurs dans l'opérateur "CASE" dans l'instruction "IN" de la clause WHERE, voir ce qui suit:

WHERE [CLIENT] IN (CASE WHEN T.[IS_PHYSICAL] THEN 2421, 2431 ELSE 2422, 2432 END) 

Le problème ici est en 2421, 2431 – ils ne peuvent pas être séparés par une virgule. Y at-il une solution pour écrire cela d'une autre manière? Merci.

C'est plus simple si vous n'utilisez pas case dans la clause where . Quelque chose comme ça:

 where (T.[IS_PHYSICAL] = 1 and [client] in (2421, 2431)) or (T.[IS_PHYSICAL] = 0 and [client] in (2422, 2432)) 

J'utiliserais ET / OU au lieu d'une expression de cas.

 WHERE (T.[IS_PHYSICAL] AND [CLIENT] IN (2421, 2431)) OR (NOT T.[IS_PHYSICAL] AND [CLIENT] IN (2422, 2432)) 

Vous pouvez le décomposer en une combinaison de ET et OU.

 WHERE ((T.[IS_PHYSICAL]=1 AND [CLIENT] IN (2421, 2431)) OR (T.[IS_PHYSICAL]=0 AND [CLIENT] IN (2422, 2432)))