2016-08-09 7 views
-5

2つの質問があります。複数の列のケースステートメント

(1)私はカラムがcolA, colB, ColC, colDです。私はcolCの値を変更する必要があります。 COLD = 'ジェフ' は 最初の3つの文字、その後COLC = 'TOM2' エルス Nullの場合、他のCOLB = 1その後、COLC = 'TOM1' の場合の条件

を以下に基づいて 。

(2)整数列にデフォルト値'12:00 pm 'を追加するにはどうすればよいですか?

私がここで必要としているのを助けてください。

おかげで、事前

+0

このmysqlまたはSQL Serverはありますか?あなたは両方のタグを付けました。 –

+0

'col1 = 1、colC = 'そして、colC ='トム '時' LEFT(colID、3)= 'Jef'とcolC = 'トム2' THEN '' ELSE NULL END' – Lamak

+0

これはSQLサーバー – John

答えて

0

にあなたの希望のロジックが完了したことは表示されません。あなたは実際に値を現在のcolA値を保持したいと思っていますか?あなたはコルブ= 1を書いていて、次にcolC = 'トム1' ...私はあなたとなると仮定します。

CASE 
    WHEN colB = 1 and colC = 'Tom1' THEN ???? 
    WHEN LEFT(colD) = 'Jef' AND colC = 'Tom2' THEN ???? 
    ELSE NULL 
END 

あなただけのCOLA値を保持したいなら、あなたは実際にあなたは完全にあなたが生産している時にCOLBと寒さの値を持っていると仮定するとOR

CASE 
    WHEN (colB = 1 and colC = 'Tom1') 
     OR (LEFT(colD) = 'Jef' AND colC = 'Tom2') THEN colA 
    ELSE NULL 
END 
+0

私は今質問を更新しました。それを確認してください – John

+0

質問は同じように見える – Matt

+0

整数列に'12:00 pm 'のデフォルト値を追加するにはどうすればいいですか? – John

0

と夜case文を組み合わせることができますCOLBと寒さにも列を計算していて、計算を繰り返したくはありません、あなたはサブクエリとcalcuのものを行うことができれば

select 
    colA 
    ,colB 
    ,case 
     when colB = 1 then 'Tom1' 
     when left(colD,3) = 'Jef' then 'Tom2' 
     else null 
    end as colC 
    ,colD 

:COLC、あなたのようなものを使用することができます外部クエリのlateColC

select 
    t1.colA 
    ,t1.colB 
    ,case 
     when t1.colB = 1 then 'Tom1' 
     when left(t1.colD,3) = 'Jef' then 'Tom2' 
     else null 
    end as colC 
    ,t1.colD 
from 
(
    select 
     colA 
     ,case when someCondition then 1 else 2 end as colB 
     ,(select top 1 name from someTable) as colD 
    from 
     ... -- whatever your source tables are 
) t1 
関連する問題