2011-12-09 95 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