2017-02-01 5 views
0

CASE文に関する質問があります。私のケースステートメントは次のようになります:SQL Case文は2つのフィールドを結合しますか?

CASE myField1 
     WHEN 1 THEN 'Jump' 
     WHEN 2 THEN 'Sleep' 
     WHEN 3 THEN 'Eat' 
     WHEN 4 THEN 'Run' 
     WHEN 5 THEN 'Break' 
     WHEN 6 THEN 'Move' 
     WHEN 7 THEN 'Stop' 
     ELSE NULL END AS TestColumn, 

この文では、他のフィールドの値に基づいて1つのイニシャルを追加する必要があります。私は確認することができますどのように

Jump A 
Sleep 
Eat A 
Run 
Break 
Move A 
Stop 

:myField2が1に等しい場合にはない場合のオプションは、文字Aがあるかもしれないときに、それぞれの端に、私は、文字Aの出力は次のようなものでなければなりません入れていないだろう私の2番目のフィールドはSQL CASEで、既存の単語の値を連結しますか?誰かが助けてくれたら教えてください。ありがとう!

+0

別のCASE: '||ケース1 Field2 = '1' THEN 'A' ELSE '' END' – dnoeth

+1

@dnoethよくSQL Serverの '+' not '||'です。 –

+0

@AaronBertrand:私は知っておくべきですが、私は標準SQLに慣れています:-)(そして私はSS2008タグを見落としました) – dnoeth

答えて

3

ちょうどそれらを一緒に連結します。

SELECT (CASE myField1 
      WHEN 1 THEN 'Jump' 
      WHEN 2 THEN 'Sleep' 
      WHEN 3 THEN 'Eat' 
      WHEN 4 THEN 'Run' 
      WHEN 5 THEN 'Break' 
      WHEN 6 THEN 'Move' 
      WHEN 7 THEN 'Stop' 
      ELSE '' 
     END) + (CASE WHEN myField2 = 1 THEN 'A' ELSE '' END) AS TestColumn, 

注:私はELSE ''ELSE NULLを変更しました。これにより、前の値に値がない場合に'A'が表示されます。 +のどちらかの引数がNULLの場合、結果はNULLになります。

詳細を確認すると、「A」の前にスペースが必要です。既存の値が存在しない場合にも "A"を使用する場合は、を使用してください。

SELECT LTRIM((CASE myField1 
       WHEN 1 THEN 'Jump' 
       WHEN 2 THEN 'Sleep' 
       WHEN 3 THEN 'Eat' 
       WHEN 4 THEN 'Run' 
       WHEN 5 THEN 'Break' 
       WHEN 6 THEN 'Move' 
       WHEN 7 THEN 'Stop' 
       ELSE '' 
      END) + 
      (CASE WHEN myField2 = 1 THEN ' A' ELSE '' END) 
     ) AS TestColumn, 
+0

ありがとう!これはまさに私が探していたものです。私は前に複数のケースを組み合わせていません。これは将来役立つ可能性があります。 –

関連する問題