2013-02-19 6 views
3

, что им пытаются сделать, это сделать запрос рассматривать или нет значение даты и времени, поэтому я не должен делать это в хранимой процедуреслучай использования в котором пункт SQL Server

if @considerDate =1 
    begin 
     select * from table 
     where dateCol = @date 
    end 
else 
    begin 
     select * from table 
    end 

я хотел бы сделать somethink как

select * from table 
where dateCol = (case 
        when @date is not null 
        then @date 
      ) 

В одном запросе

ответ

4

Если я правильно вас понимание, это должно работать:

SELECT * 
FROM Table 
WHERE dateCol = 
    CASE WHEN @date is not null then @date ELSE dateCol END 
12

вам просто нужно добавить ключевое слово END

SELECT * 
FROM tableName 
WHERE dateCol = CASE WHEN @considerDate =1 
         THEN @date 
         ELSE dateCol 
        END 
+0

Я собирался спросить о случае ELSE. Хороший ответ. –

2

не могли бы вы сделать что-то вроде этого, которое было бы гораздо понятнее?

SELECT * 
FROM table 
WHERE dateCol = IsNull(@date, dateCol)