Dinamicamente girando uma mesa Oracle

Eu tenho uma tabela que se parece com isso:

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

Eu quero pegar essa tabela de resultados / view:

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

Alguém tem uma idéia de como eu poderia conseguir isso? Eu tentei com:

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

Eu recebi um erro:

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

questionAnswers(1)

yourAnswerToTheQuestion