2009-08-06 11 views
11

に、私は以下のようにクエリを設定する必要があります。上などUPDATE(SQL Server 2005および/またはアクセス2007)

UPDATE XXXXXX 
IF column A = 1 then set column B = 'Y' 
ELSE IF column A = 2 then set column C = 'Y' 
ELSE IF column A = 3 then set column D = 'Y' 

ので...

I複数のクエリを使用してこれを行うことができますが、代わりに1つのステートメントでそれを行うことができれば不思議に思っていました。

答えて

31

これはあなたが...あなたはデータモデルを再考したいことをしたいと思う理由の質問です

update table_name 
    set column_b = case 
        when column_a = 1 then 'Y' 
        else null 
       end, 
    set column_c = case 
        when column_a = 2 then 'Y' 
        else null 
       end, 
    set column_d = case 
        when column_a = 3 then 'Y' 
        else null 
       end 
where 
conditions 

を動作するはずです。 nullを任意のものに置き換えることができます。

+0

感謝を使用することができます。これは正解とマークされるべきです。 – GaussZ

+1

私はSQL 2008で試したように2つの余分な "セット"があります。答えをありがとう – stoto

4

はい、あなたはCASE

UPDATE table 
SET columnB = CASE fieldA 
     WHEN columnA=1 THEN 'x' 
     WHEN columnA=2 THEN 'y' 
     ELSE 'z' 
     END 
WHERE columnC = 1 
関連する問題