每个州的产品价格不同

时间:2014-12-05 18:26:23

标签: sql case

我正在尝试对客户购买的商品的价格进行查询。问题是所有产品都是在一个基础层面上构建的,并且空白'例如,见下文。

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

修改了这个有效,但是NULL不起作用所以我需要一些东西来替换它以捕获一个空白字段(字段为空/空白而不是NULL)

1 个答案:

答案 0 :(得分: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