Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
临时列上的sql查询条件_Sql_Conditional Statements_Temp Tables - Fatal编程技术网

临时列上的sql查询条件

临时列上的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结束 到目前为止一切都很好。我的成绩中的日期越

我仔细考虑了一下这个问题。发现了一些问题,但没有一个解决了我的问题

我试图做的是比较表中的两个日期,我使用case语句返回两个日期中较大的一个

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
的字符串,然后使用类似