I have worked a bit in pivot/unpivot in Oracle SQL but this one seems little complex and need some help here. the below is my table design
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 |
---|---|---|---|---|
2019 | 100 | 1000 | 101 | 1001 |
like this I have multiple companies as columns (each as a set of 4) and the report needs to be kinda be reader friendly
Company | year | due_ct | due_amt | prev_or_curr |
---|---|---|---|---|
A | 2019 | 100 | 1000 | prev |
A | 2019 | 101 | 1001 | cur |
any help is gold here!!!! thanks
Advertisement
Answer
Are you looking for something like this?
x
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;