2017-11-20 5 views
0

私は、SQL Serverの次のような状況している:私たちは3つの値1、2と3でいっぱいの列を持っているのは、はい、その1つの手段を想定テーブルでSQL Serverの - 値を示すように、異なる値

をしてみましょう2はnoを意味し、3は多分を意味する。

この列を選択する方法はありますか?はい、いいえ、おそらく1,2,3の代わりに値を示していますか?

+0

ケース式を使用するよりも、テキスト値を保持するルックアップテーブルを作成することができます。次に、それに参加してテキスト列を表示するだけです。そうすれば、別の値を追加したり、コードを変更する必要がないものを追加したりするだけで、テーブルに別の値を追加するだけで、他のすべての値が機能します。 –

答えて

0

はい..youが

SELECT 
CASE test_column 
    WHEN 1THEN 'YES' 
    WHEN 2 THEN 'NO' 
    ELSE 'MAY BE' 
END as test_op 
FROM table1 
0

、あなたは次のようになりケースを使用することができることを行うためにCASE式を使用することができますこの

 select 
     case when field = 1 then 'YES' 
      when field = 2 then 'NO' else 'MAYBE' end FieldName 
     from table 

注のようなもの:1または2以外の値は、あなたが別のケースを追加することができ、多分になります他の回答に見case/when書類番号3

0

以下のようにあなたがはい、それは可能である。このためのケースを使用することができます

select 
case value 
    when 1 then 'yes' 
    when 2 then 'no' 
    when 3 then 'maybe' 
end 
from 
table 
0

代替の値(1/2/3)の記述を含む参照テーブルを作成することです。

このようにすることの最大の利点は、これを複数の場所で使用すると、すべてを一度に更新できることです。

dbo.curValDescテーブルは、作成/作成する必要のある参照テーブルです。あなたの消費しているクエリは、一番下のものと同じように見えます。

create table dbo.existingData 
    (
     rowID int 
     , curVal tinyint --the column with values of 1/2/3 
    ) 

insert into dbo.existingData 
values (1, 1) 
    , (2, 2) 
    , (3, 3) 
    , (4, 3) 
    , (5, 2) 
    , (6, 1) 
    , (7, 1) 

create table dbo.curValDesc 
    (
     curVal tinyint 
     , curValDesc varchar(10) 
    ) 

insert into dbo.curValDesc 
values (1, 'Yes') 
    , (2, 'No') 
    , (3, 'Maybe') 

select ed.rowID 
, cvd.curValDesc 
from dbo.existingData as ed 
inner join dbo.curValDesc as cvd on ed.curVal = cvd.curVal 
関連する問題