2017-02-27 10 views
-1

私はDBテーブルclaim3のフィールドがfroiexportedで、値は1または0に設定されています。 case文の条件が満たされた場合、froiexportedの値が1に設定されていて、それ以外は何もしません。以下は、私の結果が毎日正しくないことになります。Else do nothing SQL query

update claim3 
set froiexpoted = 
CASE 
    WHEN froimaintdate >= dateadd(day,datediff(day,1,GETDATE()),0) 
    AND froimaintdate < dateadd(day,datediff(day,0,GETDATE()),0) 
    AND c1.jurst in ('AK', 'AL', 'CA', 'CO', 'FL', 'GA', 'IA', 'IN', 'KS', 'KY', 'LA', 'MA', 'ME', 'MN', 'MO', 'MS', 'NC', 'NE', 'NJ', 'PA', 'RI', 'SC', 'TN', 'TX', 'UT', 'VA', 'VT', 'WV') 
    THEN '1' 
    ELSE '0' 
END 
+3

'ELSE froiexpoted' –

+0

をあなたがそれをしたくない場合あなたのcaseステートメントでELSE句を使用する必要がないものはすべて実行してください。ちょうどそれを残す。 –

+0

ここでは...これがフィルタが存在する理由です。 – Hogan

答えて

0

基準が満たされている場合は1に設定し、それ以外の場合は現在の値に設定しますか?

1

あなたが代わりにwhere句を使用することができます。

update claim3 
    set froiexpoted = 1 
    where froiexpoted <> 1 
    and froimaintdate >= dateadd(day,datediff(day,1,getdate()),0) 
    and froimaintdate < dateadd(day,datediff(day,0,getdate()),0) 
    and c1.jurst in ('AK', 'AL', 'CA', 'CO', 'FL', 'GA', 'IA', 'IN' 
     , 'KS','KY', 'LA', 'MA', 'ME', 'MN', 'MO', 'MS', 'NC', 'NE' 
     , 'NJ', 'PA', 'RI', 'SC', 'TN', 'TX', 'UT', 'VA', 'VT', 'WV' 
    ) 

をあなたにも、前の日のために0を設定する必要がある場合:

update claim3 
    set froiexpoted = case 
    when c1.jurst in ('AK', 'AL', 'CA', 'CO', 'FL', 'GA', 'IA', 'IN' 
      , 'KS','KY', 'LA', 'MA', 'ME', 'MN', 'MO', 'MS', 'NC', 'NE' 
      , 'NJ', 'PA', 'RI', 'SC', 'TN', 'TX', 'UT', 'VA', 'VT', 'WV' 
     ) 
     then 1 
    else 0 
    end 
    where froimaintdate >= dateadd(day,datediff(day,1,getdate()),0) 
    and froimaintdate < dateadd(day,datediff(day,0,getdate()),0) 
+0

状態コード。 – Dizzle

+0

これは理論的にはうまくいくが、毎日実行されているので、これは常に前日を0に設定するだろうか? 1が設定されたら、私はそれを残しておきたい。 – Dizzle

+1

このコードでは@Dizzleを0に設定しません - それは1に設定します。 – Hogan