Поскольку в обоих ваших делах используется условие m.appId = @appId
, вы можете реорганизовать свои WHERE
logi c как:
SELECT *
FROM T_Mytable m
WHERE
m.appId = @appId AND
@siteId IN (0, m.siteId);
CASE
выражения, предназначенные для генерации литеральных значений, а не логических выражений , как их вывод. Таким образом, вставка выражения CASE
в предложение WHERE
, как вы это сделали, не имеет смысла. Вместо этого просто напишите условия, используя AND
плюс OR
напрямую.