其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我
oracle的decode改为hive的case when
原理
oracle | decode | 如果(a.Bonus的值是1,就显示1,如果是2,就显示2,其他就显示空 |
---|---|---|
hive | case when | (如果a.Bonus的值是1,就显示1,如果是2,就显示2 ,else其他就显示空) |
简单的decode改case when
oracle 原sql
select
decode(a.Bonus, '1', '1', '2', '2', '') as Di
from
A a
hive 改sql
select
(case b.BonusFlag
when '1' then
'1'
when '2' then
'2'
else
''
end) as Di
from
A a
子查询的decode改case when
oracle 原sql
select
decode((select Sex
from B b
where b.riskcode = a.riskcode),
'0',
'1',
'1',
'2',
'0') as Sex
from
A a
hive 改sql
select
(case b.Sex
when '0' then
'1'
when '1' then
'2'
else
'0'
end) as Sex,
from
A a
LEFT JOIN
B b
on b.riskcode = a.riskcode
子查询包着decode语句改case when
需要拆开看,先看查出条件是什么,改成正常的子查询,再把值放写在case when里面
oracle 原sql
select
(select decode(b.mtype, '1', '1', '2', '2', '')
from B b
where b.riskcode = a.riskcode) as mType
from
A a
hive 改sql
select
(case b.mtype
when '1' then
'1'
when '2' then
'2'
else
''
end) as MType,
from
A a
LEFT JOIN
B b
on b.riskcode = a.riskcode