2012-06-18 136 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。