2016-08-11 7 views
0

3つの異なる列に指定できる値に基づいて1つの値を返すクエリが必要です。 3列の1つだけが0より大きくなります。クエリの作成に問題があります。私は、戻り結果がなりたいSQLクエリ3つの列にある可能な値から1つの戻り値を設定する必要があります

select 
    FieldA, FieldB, 
    (If FieldC > 0 then 'We Have C' 
    else if FieldD > 0 then 'We Have D' 
    else if FieldE > 0 then 'We Have E' 
    end if 
    ) as WeHave 
from 
    ThingsWeHave 

表:のような

FIELDA FIELDB FIELDC FIELDD FIELDE 
--------------------------------------------- 
Plastic Blue  0  10  0 
Plastic Blue  10  0   0 
Plastic Blue  0  0   20 

クエリ何か。

FieldA  FieldB  WeHave 
--------------------------------- 
Plastic Blue  We Have D 
Plastic Blue  We Have C 
Plastic Blue  We Have E 

答えて

2

これはcaseのステートメントと呼ばれている:

select FieldA, FieldB, 
     (case when FieldC > 0 then 'We Have C' 
      when FieldD > 0 then 'We Have D' 
      when FieldE > 0 then 'We Have E' 
     end) as WeHave 
from ThingsWeHave; 

はしかし、私はあなたが列に複数の "もの" を含めることができる方法を指摘し、これを答え:

select FieldA, FieldB, 
     ((case when FieldC > 0 then 'We Have C; ' else '' end) + 
     (case when FieldD > 0 then 'We Have D; ' else '' end) + 
     (case when FieldE > 0 then 'We Have E; ' else '' end) 
     ) as WeHave 
from ThingsWeHave; 

このISNちょっとあなたの質問ですが、役に立つかもしれません。

+0

これはまさに私が探していたものであり、追加の例に感謝します。 –

0

CASE WHEN式を使用してください。

SELECT FieldA, FieldB, 
     CASE 
      WHEN FieldC > 0 THEN 'We have C' 
      WHEN FieldD > 0 THEN 'We have D' 
      WHEN FieldE > 0 THEN 'We have E' 
     END as WeHave 
FROM ThingsWeHave 

1つのフィールドだけが同時に0でない場合、1つのCASE WHENステートメントが必要です。

関連する問題