SQL-запрос условие для временного столбца - PullRequest
1 голос
/ 22 июля 2011

Я немного подумал об этом.Нашел несколько вопросов по SO, но ни один из них не решил мою проблему.

То, что я пытаюсь сделать, это сравнить две даты в таблице, я возвращаю большее из двух значений с помощью оператора case

select <-- similar code but not actual code
...
case
when date1 > date2 then date1 else date2 end as lastDate

Все хорошо до этого момента.Я получаю большую дату в моем результате.Проблема в том, что я хочу применить предложение WHERE к LastDate.Поскольку lastDate - это временный столбец, он не будет принят в предложении WHERE, в котором я использовал этот синтаксис

if @cur_date != null  <---- this is parameter to my store procedure, if not null then
case when date1 > date then date1 like '2011-%' else date2 like '2011-%'

Но я получаю ошибку для неуместного ключевого слова like.Я думаю, что оператор не может быть возвращен после ключевого слова then в операторе case.Как мне это сделать?У меня есть , чтобы использовать временную таблицу для этого?Я хочу найти лучший подход.

1 Ответ

1 голос
/ 22 июля 2011

Используйте тот же синтаксис в предложении WHERE:

WHERE case when date1 > date2 then date1 
      else date2 END
      like '2011-%'

EDIT:

Пример кода для сравнения дат:

WHERE case when date1 > date2 then CAST(date1 as varchar)
      else CAST(date2 as varchar) END
      like '2011-%'
...