Hi,
I am using database "Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production"
I am trying to convert a set of rows in columns in specific way. I am trying to explain the situation with an example below. Can you please help me to achieve this.
CREATE TABLE ROW_COL
(
ID NUMBER(4),
DISC_NM VARCHAR2(200),
DISC_VAL NUMBER,
L_YR NUMBER(4),
H_YR NUMBER(4)
);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_F',0.9,2016,2099);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_C',1.05,2016,2099);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_F',0.91,2009,2016);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_C',1.04,2009,2016);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_F',0.93,1997,2009);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_C',1.03,1997,2009);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_F',0.95,1970,1997);
Insert into ROW_COL (ID,DISC_NM,DISC_VAL,L_YR,H_YR) values (7587,'DEPR_AMT_C',1.02,1970,1997);
Commit;
Input data looks like this.
SELECT * FROM ROW_COL;
ID DISC_NM DISC_VAL L_YR H_YR
| 7587 | DEPR_AMT_F | 0.95 | 1970 | 1997 |
| 7587 | DEPR_AMT_C | 1.02 | 1970 | 1997 |
| 7587 | DEPR_AMT_F | 0.93 | 1997 | 2009 |
| 7587 | DEPR_AMT_C | 1.03 | 1997 | 2009 |
| 7587 | DEPR_AMT_F | 0.91 | 2009 | 2016 |
| 7587 | DEPR_AMT_C | 1.04 | 2009 | 2016 |
| 7587 | DEPR_AMT_F | 0.9 | 2016 | 2099 |
| 7587 | DEPR_AMT_C | 1.05 | 2016 | 2099 |
Desired Output:
ID L_YR H_YR DEPR_AMT_F DEPR_AMT_C
7587 1970 1997 0.95 1.02
7587 1997 2009 0.93 1.03
7587 2009 2016 0.91 1.04
7587 2016 2099 0.9 1.05