临时列上的SQL查询条件

时间:2011-07-22 18:24:18

标签: sql conditional-statements temp-tables

我稍微思考了这一点。在SO上发现了一些问题,但没有一个问题解决了我的问题。

我想要做的是比较表格中的两个日期,我使用案例陈述返回两者中的较大者

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

到目前为止一切都很好。我在结果中得到了更大的约会。问题是我想在LastDate上应用WHERE子句。由于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'关键字错误地收到了错误。我认为在case语句中'then'关键字后面不能返回一个语句。我该怎么做呢?我使用临时表吗?我想找到最好的方法。

1 个答案:

答案 0 :(得分:1)

WHERE子句中使用相同的语法:

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

修改

日期比较的示例代码:

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