2017-11-20 15 views
0

나는 SQL Server의 다음과 같은 상황했다 : 우리는 우리가 세 가지 값 1, 2, 3으로 채우기 열이의 예 그 한 수단을 가정 테이블에서SQL 서버 - 값을 보여주는 서로 다른 값

하자 2는 no를 의미하고 3은 아마도를 의미합니다.

예, 아니요, 1, 2 및 3 대신 값을 표시하는이 열을 선택할 수있는 방법이 있습니까? 어느 것이 네, 가능하면 사건을 사용할 수 있습니다

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

케이스 표현식을 사용하는 것보다 텍스트 값을 보유하는 조회 테이블을 만들 수 있습니다. 그런 다음 텍스트 열에 표시하기 만하면됩니다. 그런 식으로 다른 값을 추가하거나 코드를 변경할 필요가없는 것이 있으면 테이블에 다른 값을 추가하면 다른 모든 값이 작동합니다. –

답변

0

예 ..you는 할 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

당신이를 위해 케이스를 사용할 수있는

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