带有CASE语句的SQL查询

时间:2011-12-09 10:30:34

标签: sql sql-server-2008

我仍然在学习SQL查询,但发现自己陷入了困境。我理解我可以将此查询分解为两个查询以获得所需的功能,但如果可能的话,我想在一个查询中执行此操作。我的问题在于Case子句。我有一个条件,如果进出列在选定的日期范围之间,我想做myColumnValue + .5否则保持相同。 myColumnValue是一个双精度数。问题是,当我向THEN和Else子句添加'myColumnValue + some constant'时,它会使更新现在对行有效,但是当我删除它并且只有常量...它工作正常。我正在使用SQL Server 2008.我知道我可能错过了查询的某些部分,我必须将myColumnValue重新初始化为变量,但我不确定如何执行此操作。如果任何人都可以给我一些方向,如果将其保留在一个查询中,或者如果有一种更简单的方法来做到这一点没有案例,任何指导将非常感谢。提前致谢。

UPDATE myTableName
SET myColumnValue= 
(CASE 
WHEN((In <= '12/1/2011' ) AND (Out >= '12/7/2011' )) 
THEN(myColumnValue + .5 )
ELSE(myColumnValue) 
END)  
WHERE ID = 'someIndex'

1 个答案:

答案 0 :(得分:4)

正确的方法是将案例条件移至where子句:

UPDATE myTableName
   SET myColumnValue=myColumnValue + .5
 WHERE ID = 'someIndex'
   AND ([In] <= '12/1/2011' ) 
   AND ([Out] >= '12/7/2011' )
相关问题