add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
select * from V$VERSION;
BANNER BANNER_FULL BANNER_LEGACY CON_ID
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production 0
create table test(year int,Comp_A_prev_yr_due_ct int,Comp_A_prev_yr_due_amt int,
Comp_A_curr_yr_due_ct int,Comp_A_Curr_yr_due_amt int,Comp_B_Curr_yr_due_amt int
);
insert into test values(2019,100,1000,101,1001,300);

1 rows affected
insert into test values(2020,200,2000,201,2001,340);
1 rows affected
select * from test
YEAR COMP_A_PREV_YR_DUE_CT COMP_A_PREV_YR_DUE_AMT COMP_A_CURR_YR_DUE_CT COMP_A_CURR_YR_DUE_AMT COMP_B_CURR_YR_DUE_AMT
2019 100 1000 101 1001 300
2020 200 2000 201 2001 340
SELECT regexp_substr(company_prev_curr, '(.*?_){1}(.*?)_', 1, 1, '', 2) AS COMPANY
,year
,due_ct
,due_amt
,regexp_substr(company_prev_curr, '(.*?_){2}(.*?)_', 1, 1, '', 2) AS PREV_CURR
FROM test
unpivot(
(due_ct,due_amt)
FOR company_prev_curr IN (
(Comp_A_prev_yr_due_ct,Comp_A_prev_yr_due_amt),
(Comp_A_curr_yr_due_ct,Comp_A_Curr_yr_due_amt)
)
) u;
COMPANY YEAR DUE_CT DUE_AMT PREV_CURR
A 2019 100 1000 PREV
A 2019 101 1001 CURR
A 2020 200 2000 PREV
A 2020 201 2001 CURR