Условное утверждение в предложении WHERE - PullRequest
0 голосов
/ 04 августа 2009

Мне нужно написать условное утверждение в моем предложении where, в котором используются разные операторы на основе параметра, переданного в процедуру. Я не могу найти синтаксис, который будет работать.

Мой пример выглядит следующим образом:

@DateValue datetime

select * 
from table
where field1 = 'x'
and field2 = 'y'
and if @DateValue = '1/1/1900' then
  field3 <= getdate()
else
  field3 = @DateValue
end

Спасибо всем за помощь.

Ответы [ 2 ]

9 голосов
/ 04 августа 2009
and ((@DateValue = '1/1/1900' and field3 <= getdate()) or 
     (@DateValue <> '1/1/1900' and field3=@DateValue))
0 голосов
/ 10 марта 2019

Я думаю, что вам нужно что-то вроде (псевдо-код)

Create PROCEDURE GetPartialTable
@DateValue datetime
   AS
Begin

IF (@DateValue = '1900-01-01') 
select * from table where field1 = 'x' and field2 = 'y'  and field3 <= getdate();
else
  select * from table where field1 = 'x' and field2 = 'y'  and field3 = @DateValue;
END IF

END

Похоже на решение, приведенное выше, но результаты могут серьезно отличаться, если контекст более общий, например, если весь оператор SQL полностью отличается.

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