Oracle - 根据列值将记录拆分为多个记录

时间:2015-12-02 08:33:29

标签: oracle

如何在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'

1 个答案:

答案 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