临时列上的sql查询条件
我仔细考虑了一下这个问题。发现了一些问题,但没有一个解决了我的问题 我试图做的是比较表中的两个日期,我使用case语句返回两个日期中较大的一个临时列上的sql查询条件,sql,conditional-statements,temp-tables,Sql,Conditional Statements,Temp Tables,我仔细考虑了一下这个问题。发现了一些问题,但没有一个解决了我的问题 我试图做的是比较表中的两个日期,我使用case语句返回两个日期中较大的一个 select <-- similar code but not actual code ... case when date1 > date2 then date1 else date2 end as lastDate 选择date2,然后选择date1,否则选择date2作为lastDate结束 到目前为止一切都很好。我的成绩中的日期越
select <-- similar code but not actual code
...
case
when date1 > date2 then date1 else date2 end as lastDate
选择date2,然后选择date1,否则选择date2作为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-%'
如果@cur\u date!=空日期,然后是日期1,如“2011-%”或日期2,如“2011-%”
但是我得到了一个错误的“like”关键字。我认为在case语句中,不能在'then'关键字之后返回语句。我该怎么做?我必须用临时桌子吗?我想找到最好的方法。在
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-%'
在
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-%'
很好,现在我唯一的另一个问题是,如果我像“%2011-05%那样搜索
,它不会返回任何记录。我想让它返回包含“2011-05”的记录,你知道为什么会这样吗?在这种情况下,什么是正确的查询?如果你比较datetime
或smalldatetime
字段,你不能像那样使用。您需要使用DATEPART
进行评估,或者将转换为varchar
这样的字符串,然后使用这样的
很好,现在我唯一的问题是,如果我搜索像“%2011-05%
,它不会返回任何记录。我想让它返回包含“2011-05”的记录,你知道为什么会这样吗?在这种情况下,什么是正确的查询?如果你比较datetime
或smalldatetime
字段,你不能像那样使用。您需要使用DATEPART
进行评估,或者将转换为类似varchar
的字符串,然后使用类似的