2011-12-09 19 views
0

私はまだSQLクエリについて多くのことを学んでいますが、これに固執しています。私は、このクエリを2つのクエリに分解して目的の機能を得ることができると理解していますが、可能であれば、それを実行したいと思います。私の問題はCase句にあります。内と外の列が選択した日付範囲の間にある場合は条件があり、myColumnValue + .5を実行したい場合はそれを同じに保ちます。 myColumnValueはdoubleです。問題は、 'myColumnValue +いくつかの定数'をTHENとElse Clauseに追加すると、更新が行に反映されるようになりますが、削除して定数しか持たないときは問題ありません。私はSQLサーバー2008を使用しています。私はおそらく、私はvaribleとしてmyColumnValueを再初期化する必要があるクエリの一部が不足していることを知っていますが、私はこれを行う方法がわかりません。これを1つのクエリーにしておくと誰かが私に何らかの指示を与えることができ、あるいはケースなしでこれを行う簡単な方法があれば、どんな指針も大歓迎です。前もって感謝します。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

私はそれについて完全に間違って考えていた、あなたの高速応答をいただき、ありがとうございます。 elseステートメントは無意味です。なぜなら、他のステートメントが真でないと、あなたは単に何もしないからです...ありがとう、本当に助けに感謝します。 – Marrs