Dinamizar dinámicamente una tabla Oracle

Tengo una mesa que se parece a esto:

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

Quiero obtener esta tabla / vista de resultados:

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

¿Alguien tiene una idea de cómo podría lograr esto? Lo he probado con:

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

Tengo un error:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta