Dynamiczne obracanie tabeli Oracle

Mam tabelę, która wygląda tak:

C_ID   P_ID   KEY    VALUE
null   null   KEY1   VALUE1
null   null   KEY2   VALUE2
null   null   KEY3   VALUE3
2       2     KEY4   VALUE4
2       3     KEY5   VALUE5

Chcę uzyskać tabelę wyników / widok:

C_ID   P_ID   KEY1    KEY2    KEY3      KEY4    KEY5
NULL   NULL  VALUE1  VALUE2  VALUE3     NULL    NULL
2       2     NULL    NULL    NULL     VALUE4   NULL
2       3     NULL    NULL    NULL      NULL   VALUE5

Czy ktoś ma pomysł, jak to osiągnąć? Próbowałem tego z:

select * from (select c_id, p_id, r_key, r_value from s_projectroles) pivot (max(r_value) for r_key in (any));

Dostałem błąd:

ORA-00936: Ausdruck fehlt
00936. 00000 -  "missing expression"

questionAnswers(1)

yourAnswerToTheQuestion