SQL Query根据列值显示名称

时间:2012-06-18 18:55:43

标签: sql

我有一个名为ORDER_STATUS

的列的三种不同状态
  • 110(已下映)
  • 120(已包装)
  • 130(已发货)。

现在,根据查询返回的数值,我想显示实际名称。我怎样才能做到这一点?我想在SELECT中使用它。

SELECT 
  OLI.do_dtl_status ORDER_STATUS
FROM 
  appwms.order_line_item OLI
WHERE 
  ORD.tc_order_id = '1002424748' 

此处OLI.do_dtl_status ORDER_STATUS是我想要根据其值替换名称的列。请注意这是故障排除。所以我不是在寻找性能等,而是在查询中添加一些简单的东西。

2 个答案:

答案 0 :(得分:5)

理想情况下,您将名称存储在单独的表中并使用JOIN。

  

请注意这是故障排除所以我不是在寻找性能等,而是在查询中添加一些简单的东西。

对于一次性情况,您可以将它们硬编码到查询中:

SELECT CASE OLI.do_dtl_status
          WHEN 110 THEN 'Released'
          WHEN 120 THEN 'Packed'
          WHEN 130 THEN 'Shipped'
       END AS ORDER_STATUS
FROM appwms.order_line_item OLI
WHERE ORD.tc_order_id='1002424748'

答案 1 :(得分:0)

典型的方法是使用ordertatus(value,name)和可能是该表的外键的单独表。通过这种方式,您可以使用orderstatus表来获取状态名称,外键可以确保您只在主表中输入有效的orderstatus。