Корпус переключателя не работает таким образом. Предложение ELSE - это то, к чему по умолчанию следует обращаться, если ни один из других фильтров не обеспечивает решение. CASE - это не более чем серия утверждений IF. Итак, вы в основном написали следующее:
if the value of @check is 0 then return 'typeA'
otherwise return ('typeB' OR 'typeC')
Но как SQL может возвращать несколько значений? Скорее всего, вы должны изменить свое утверждение CASE, как показано ниже Вместо проверки @check вы должны проверить элемент, который имеет несколько опций. Приведенный ниже запрос вернет записи, в которых TYPE - это typeA или typeB, если @check = 0.
DECLARE @check bit = 1
SELECT * FROM @table
WHERE [STATUS] = 1
AND CASE [TYPE] WHEN 'typeA' THEN 0 WHEN 'typeB' THEN 0 WHEN 'typeC' THEN 1 END = 0 AND @check = 0