2011-12-09 31 views
0

我仍然在学习关于SQL查询的大部分内容,但发现自己停留在此处。我知道我可以将此查询分解为两个查询来获得所需的功能,但如果可能的话,我希望在一个查询中完成。我的问题在于Case条款。我有条件,如果进出列在选定的日期范围之间,我想做myColumnValue + .5,否则保持不变。 myColumnValue是双精度值。问题是,当我添加'myColumnValue +一些常量'到THEN和Else子句时,它使更新现在对该行有效,但是当我删除它并且只有常量时...它工作正常。我正在使用SQL Server 2008.我知道我可能缺少查询的一部分,我必须重新初始化myColumnValue作为变量,但我不确定如何执行此操作。如果任何人都可以给我一些指导,如果将此保存到一个查询中,或者如果没有案例更容易的方法来做到这一点,任何指导将不胜感激。提前致谢。带有CASE语句的SQL查询

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

回答

4

正确的方法是运行情况条件where子句:

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

谢谢你的反应速度快,我在想这件事完全错误的。其他陈述是毫无意义的,因为如果其他陈述不是真的,你根本就不会做任何事情......谢谢你,我真的很感谢你的帮助。 – Marrs