2014-11-10 2 views
0

Я хочу использовать if else, где условие для Date Coulmns. На самом деле, что я хочу сделать, это:Как использовать If Else Condition in Where Where в столбцах SQL Server для столбцов даты?

У меня есть таблица, которая имеет две колонки, CreatedDate и LastModifiedDate. Теперь, что я хочу проверить в Stored Proc:

Если LastUpdateDate имеет значение null, то он проверяет наличие CreateDate.

Ниже мой запрос:

SELECT isnull(SSA.UpdateDateTime, 
     isnull(SSA.CreateDateTime,'')) as LastUpdateAnswerDateTime 
from SI_SurveySiteAnswer SSA 
WHERE SSA.UpdateDateTime IS NOT NULL 

Есть другой номер таблицы в соединениях я просто вставив только требуемый запрос. как я могу пойти на проверку, я полностью смущен.

Пожалуйста, помогите мне ..

ОБНОВЛЕНО:

Я должен написать код, приведенный ниже, пожалуйста, проверьте, если это правильный способ использования Если где

SELECT isnull(SSA.UpdateDateTime, 
     isnull(SSA.CreateDateTime,'')) as LastUpdateAnswerDateTime 
from SI_SurveySiteAnswer SSA 
WHERE SSA.UpdateDateTime = ISNULL(SSA.UpdateDateTime,SSA.CreateDateTime) 

Я думаю, я не смог сделать свое требование очень ясным вначале, позвольте мне объяснить здесь.

У меня есть вопрос опроса ans wer table, я хочу отправить уведомление по электронной почте, если на вопрос был дан ответ, теперь ответ может ответить за один раз, в этом случае createddate будет иметь значение not updateddatetime, Второй случай: Ответ обновляется во втором ходу, затем Мне нужно проверить LastUpdateDateTime ..

Это то, что я хочу сделать в запросе.

+0

может быть и нужно использовать в COALESCE –

+0

вы можете предоставить некоторые примеры .. пожалуйста –

+0

я не получил свою логику у использовал 'WHERE SSA.UpdateDateTime IS NOT NULL' то, что нужно «NULL check» для того же самого в 'select' –

ответ

1

Вам не нужно никакой функциональности if/else, просто используйте оператор or, чтобы проверить, что либо не равно нулю:

WHERE SSA.CreateDateTime is not null OR SSA.UpdateDateTime is not null 
+0

Guffa, она выберет все строки ... –

+0

@raman: Тогда все строки имеют ответ. Условие будет отфильтровывать все записи, где нет времени создания и времени обновления. – Guffa

0

Try сазе.

SELECT isnull(SSA.UpdateDateTime, 
     isnull(SSA.CreateDateTime,'')) as LastUpdateAnswerDateTime 
from SI_SurveySiteAnswer SSA 
WHERE CASE WHEN SSA.UpdateDateTime IS NULL THEN SSA.CreateDateTime 
ELSE SSA.UpdateDateTime END IS NOT NULL 
+0

Вы сравниваете дату с самим собой или null, так что это эквивалентно 'WHERE SSA.UpdateDateTime IS NOT NULL', он не будет рассматривать' SSA.CreateDateTime' вообще. – Guffa

+0

Привет @Guffa, я отредактировал ответ. Я не совсем понял ваши требования. Извините –

0

вы можете использовать case

SELECT Isnull(SSA.updatedatetime, Isnull(SSA.createdatetime, '')) AS 
     LastUpdateAnswerDateTime 
FROM si_surveysiteanswer SSA 
WHERE SSA.updatedatetime = CASE 
           WHEN SSA.updatedatetime IS NULL THEN 
           @SSA.createdatetime 
           ELSE SSA.updatedatetime 
          END 
+0

Вы сравниваете дату с самим собой или null, так что это эквивалентно 'WHERE SSA.UpdateDateTime IS NOT NULL', он вообще не будет рассматривать' SSA.CreateDateTime'. – Guffa