Как применить case в том, где пункт в SQL Server? - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть запрос в SQL Server со следующим where условием

where  (Convert(date,AppDate) between Convert(date,''+@DateFrom +'') AND
    Convert(date,''+@DateTo+'') and DrCode =  '' +@DrCode+'' ) 

Но я хочу добавить and DrCode = '' +@DrCode+'', когда DrCode> 0

Как его установить?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Если вы хотите использовать условие DrCode > 0 с DrCode = '' +@DrCode+'' отдельно, тогда вы можете попробовать следующее:

where (Convert(date,AppDate) between Convert(date,''+@DateFrom +'') AND
    Convert(date,''+@DateTo+'')) and 
    (CASE WHEN DrCode > 0 AND DrCode =  '' +@DrCode+'' THEN 1 ELSE 0 END =1)
0 голосов
/ 11 сентября 2018

Я не знаю, почему вы делаете конкатенацию строк следующим образом:

'' + @DateFrom + ''

В любом случае, я не думаю, что выражение CASE подходит для того, что вы хотите сделать.Просто изложите логику прямо в предложении WHERE:

WHERE
    CONVERT(date, AppDate) BETWEEN
        CONVERT(date, @DateFrom) AND CONVERT(date, @DateTo) AND
        ((DrCode = @DrCode AND DrCode > 0) OR DrCode <= 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...