Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Pivot (unpivot) multiple columns to multiple rows

misurexJun 23 2016 — edited Jun 27 2016

Hello,

I have 5 columns that I need to pivot/unpivot into 5 rows, if it's possible. Here's a test data:

with val as (

              select 'Woman' gender, '2000' year, 100 ins_prim, 101 ins_sec, 102 ins_resp, 103 fact_prim, 104 fact_sec from dual

              union

              select 'Woman' gender, '2001' year, 200 ins_prim, 201 ins_sec, 202 ins_resp, 203 fact_prim, 204 fact_sec from dual

              union

              select 'Woman' gender, '2002' year, 300 ins_prim, 301 ins_sec, 302 ins_resp, 303 fact_prim, 304 fact_sec from dual

              union

              select 'Man' gender, '2000' year, 400 ins_prim, 401 ins_sec, 402 ins_resp, 403 fact_prim, 404 fact_sec from dual

              union

              select 'Man' gender, '2001' year, 500 ins_prim, 501 ins_sec, 502 ins_resp, 503 fact_prim, 504 fact_sec from dual

)

select * from val;

I need to transform from:

GENDER       YEAR        INS_PRIM       INS_SEC        INS_RESP         FACT_PRIM          FACT_SEC

--------------      ----------       ----------------       ---------------       -----------------        -----------------            -------------------

Man              2000          400                  401                  402                     403                      404

Man              2001          500                  501                  502                     503                      504

Woman         2000          100                  101                  102                     103                      104

Woman         2001          200                  201                  202                     203                      204

Woman         2002          300                  301                  302                     303                      304

To:

GENDER      INSURANCE         2000          2001        2002

-------------       ------------------         -------          -------         -------

Man              ins_prim             400             500          null

Man              ins_sec               401             501          null

Woman         ins_prim             100             200          300

Woman         ins_sec               101             201          301

Woman         ins_resp             102             202          302

Woman         fact_prim            103             203          303

Woman         fact_sec              104             204          304

Thank you !

This post has been answered by Pavan Kumar on Jun 23 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 25 2016
Added on Jun 23 2016
8 comments
4,757 views