2012-06-18 139 views
2

名称我有三个不同的状态为 SQL查询显示基于列的值

  • 120(盒装)
  • 130(出货)称为ORDER_STATUS

    • 110(发行日期)的柱。

    现在取决于查询返回的数值,我想显示实际的名称。我怎样才能做到这一点?我想在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是我想要取决于其值取决于名称的列。请注意这是为了解决问题。所以我不在寻找性能等,但很容易添加到查询中。

  • +0

    什么是'ORD'?你使用它,但它没有在任何地方定义。 –

    回答

    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' 
    
    0

    的典型方法是有orderstatus(值,名称),一个单独的表和一个可能是该表的外键。这样,您就可以与orderstatus表连接,以获得状态名称和外键确保你只在主表中输入有效orderstatus。