Поведение T-SQL CASE в предложении WHERE - PullRequest
0 голосов
/ 11 июня 2019

Заранее спасибо за проявленный интерес!

Я хочу отправить параметр состояния рабочего задания (@WOStatusCriteria) в хранимую процедуру (в SQL Server 2016) для использования в SELECT.Я хочу запросить статус «R» (Выпущено) или «F» (Фирма) ИЛИ ОБА, в зависимости от необходимости на данный момент.

Поскольку возможные коды состояния - C, F, R,U и X, я написал следующий CASE в предложении WHERE, надеясь, что если R или F не были явно отправлены в параметре, оба состояния R и F будут возвращены на основе фразы NOT C, NOT U, NOT X.Это не работает, и я ищу решение, которое работает.Любые мысли по этому поводу будут оценены.

(wo.STATUS = CASE 
    WHEN @WOStatusCriteria = 'R' THEN 'R'
    WHEN @WOStatusCriteria = 'F' THEN 'F'
END)
AND (NOT wo.STATUS = N'C' AND NOT wo.STATUS = N'U' AND NOT wo.STATUS = N'X') 

1 Ответ

0 голосов
/ 11 июня 2019

Ваш текущий код должен работать, если вы добавите:

ELSE wo.STATUS

к вашему выражению CASE.

, поскольку wo.STATUS всегда будет равно wo.STATUS, CASE будет игнорироваться, а другие условия будут оцениваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...