2014-12-05 75 views
1

我試圖運行一個客戶購買的物品的價格查詢。問題是所有的產品都是在基礎層上建立的,例如下面的「空白」狀態。產品的每種狀態的不同價格

STATE PRODUCT PRICE 
     X  5.00 
OH  X  5.25 
CA  X  5.75 
     Y  6.00 

我想知道如果即時通訊這種類型的case語句得到的地方,並在那裏我會放這個,因爲這將是一個JOIN語句

(case when a.state= b.state THEN a.state ELSE 'BLANK' END) 

編輯:

SELECT o.NAME, o.STATE, o.ITEM, i.RATE 
FROM ORDERS o 
LEFT JOIN ON ITEM_DESC i 
o.ITEM = i.ITEM AND 
CASE 
     WHEN o.state = i.state 
     THEN o.state 
     ELSE NULL 
     END = i.state 

REVISED這個工程,但NULL不工作,所以我需要的東西來取代與捕捉一個空白字段(字段是空的/空白不是NULL)

+1

情況下,當聚結(狀態, '')= '' 則 '空白' 端,同時覆蓋空狀態和NULL條件。 – radar 2014-12-05 18:33:44

+0

@radar ...如果它將成爲JOIN語句的一部分,我會將它放在哪裏?當有比賽時會發生什麼? – dc4teg 2014-12-05 19:09:34

+0

你可以發佈你的其他表,並加入正在完成的,與完整的細節,這是很難說。 – radar 2014-12-05 19:11:03

回答

1

如果費率爲null,則可以通過在case語句中執行相關子查詢來獲得結果。

SQL FIDDLE DEMO

SELECT o.NAME, 
     o.STATE, 
     o.ITEM, 
     case when i.RATE is NULL 
      then (select rate from item_desc 
        where item = o.item 
        and coalesce(state,'') ='' 
       ) 
      else i.RATE 
      end as RATE 
FROM ORDERS o 
LEFT JOIN ITEM_DESC i 
ON o.ITEM = i.ITEM 
AND o.STATE = i.STATE 
相關問題