попробовать:
WHERE (@flag = 1 AND record.field = a )
OR (@flag = 2 AND record.field IN (b, c))
может быть лучше попытаться присоединиться к значению и использовать индекс:
DECLARE @Table (ValueOf int)
INSERT INTO @Table ((ValueOf)
SELECT a WHERE @flag = 1
UNION SELECT b WHERE @flag = 2
UNION SELECT c WHERE @flag = 2
SELECT
....
FROM ... x
INNER JOIN @Table t ON x...=t.ValueOf