如何在Oracle中获得以下结果,表名为EMP_REC。如果SPLIT字段=' YES',则应将AMOUNT分成2个记录(原始值的50%)。
CURRENT DATASET
---------------
ID AMT SPLIT
----------------------------
111 500 'YES'
222 500 'NO'
REQUIRED RESULT
---------------
ID AMT SPLIT
---------------------------
111 250 'YES'
111 250 'YES'
222 500 'NO'
答案 0 :(得分:0)
这是获得你所追求的结果的一种方法(相当简单):
with yes_perc(yes, prc) as (
select 'YES'
, count(1) over() as prc
from dual
connect by level <= 2
)
select t.id
, case
when t.split1 = y.yes
then t.amt / y.prc
else t.amt
end as amt
, t.split1
from your_table_name t
left join yes_perc y
on (t.split1 = y.yes)
结果:
ID AMT SPLIT1
---------- ---------- ------
111 250 YES
111 250 YES
222 500 NO