在表 oracle 上使用大小写从同一行中选择值
Posted
技术标签:
【中文标题】在表 oracle 上使用大小写从同一行中选择值【英文标题】:select value from same row using case on table oracle 【发布时间】:2016-02-01 07:52:04 【问题描述】:我在 oracle 中有一张这样的表:
然后我想选择 customer_type 和名为“customer_id”的新列。如果 customer_type 为 'CORPORATE',则 'customer_id' 列将填充shipper_id,否则如果 customer_type 为 'RETAIL',则列 ('customer_id') 将填充shipper_phone。
这是我的查询:
select
shipper_id,
shipper_name,
customer_type,
case customer_type when 'RETAIL' then shipper_phone
when 'CORPORATE' then shipper_id
else 'Y'
from
connote c
inner join
mst_customer mc
on c.shipper_id = mc.customer_id ;
【问题讨论】:
【参考方案1】:您在 CASE 语句中缺少 END
关键字:
SELECT shipper_id,
shipper_name,
customer_type,
CASE customer_type
WHEN 'RETAIL'
THEN shipper_phone
WHEN 'CORPORATE'
THEN shipper_id
ELSE 'Y'
END
FROM connote c
INNER JOIN mst_customer mc
ON c.shipper_id = mc.customer_id;
同样可以使用 DECODE 编写:
SELECT shipper_id,
shipper_name,
customer_type,
DECODE(customer_type,
'RETAIL',
shipper_phone,
'CORPORATE',
shipper_id,
'Y')
FROM connote c
INNER JOIN mst_customer mc
ON c.shipper_id = mc.customer_id;
【讨论】:
以上是关于在表 oracle 上使用大小写从同一行中选择值的主要内容,如果未能解决你的问题,请参考以下文章