Я не знаю, почему вы делаете конкатенацию строк следующим образом:
'' + @DateFrom + ''
В любом случае, я не думаю, что выражение CASE
подходит для того, что вы хотите сделать.Просто изложите логику прямо в предложении WHERE
:
WHERE
CONVERT(date, AppDate) BETWEEN
CONVERT(date, @DateFrom) AND CONVERT(date, @DateTo) AND
((DrCode = @DrCode AND DrCode > 0) OR DrCode <= 0);