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