2016-06-23 67 views
2

我在写一个简单的SELECT查询以从SQL表中检索一组项目编号。SQL将数字转换为单词

现在从这张表中,我想要得到Item类型,它可以是三种之一。 Make, Buy or undefined

我的问题是,这是在数据库中的数字表示。我的表格有一个名为ITMTYPE的列,但是表示1 or 2 or 3 for Make, Buy or undefined

任何人都可以告诉我一种方法来添加一列到我的选择查询,可以显示项目类型的等效措辞吗?

下面是我想看到的东西,

Item_Number Item_Type_Num Item Type_val 
A    1    Make 
B    2    Buy 
C    3    Undefined 
D    2    Buy 
E    1    Make 

这第三列是我想看到的。 感谢

+0

是ITMTYPE外键?如果不是,那么最简单的方法就是添加一个case语句 – Chris

回答

1

使用简单的案例表达。

select 
    Item_Number, 
    Item_Type_Num , 
    Case Item_Type_Num 
     when 1 then 'Make' 
     when 2 then 'Buy' 
     when 3 then 'Undefined' 
    else 'Unknown' 
    end as 'Item_type_val' 
from Yourtable 
3

您可以使用CASE EXPRESSION

SELECT t.Item_Number,t.ITMTYPE as Item_Type_Num, 
     CASE WHEN t.ITMTYPE = 1 THEN 'Make' 
      WHEN t.ITMTYPE = 2 THEN 'Buy' 
      WHEN t.ITMTYPE = 3 THEN 'undefined' 
     END as Item_Type_Val 
FROM YourTable t 

如果你有日常需求本专栏中,我会建议你把它添加到表:

ALTER TABLE YourTable 
    ADD Item_Val_Type VARCHAR2(10); 

,然后更新它:

UPDATE YourTable t 
SET t.Item_Val_Type = CASE WHEN t.ITMTYPE = 1 THEN 'Make' 
          WHEN t.ITMTYPE = 2 THEN 'Buy' 
          WHEN t.ITMTYPE = 3 THEN 'undefined' 
         END; 
+0

如果您要添加一个额外的列,SQL Server会计算列 - 永远不会不一致! (或者改为创建一个视图。) – jarlh

0
CASE expression 

    WHEN value_1 THEN result_1 
    WHEN value_2 THEN result_2 
    ... 
    WHEN value_n THEN result_n 

    ELSE result 

END 

select item_number 
,case Item_Type_num 
    when 1 then 'Make' 
    when 2 then 'Buy' 
    else 'Undefined 
end