Transponer resultados selectos con Oracle

Mi pregunta es, con algunos antecedentes:

Tengo que generar algunas consultas de SQL basadas en los metadatos de la tabla (formato de columna), y el resultado es algo como:

TABLENAME1|COL1
TABLENAME1|COL2
TABLENAME2|COL1
TABLENAME2|COL2
TABLENAME2|COL3
TABLENAME3|COL1
TABLENAME4|COL1
TABLENAME4|COL2
... /*some other 1800 rows */

(Sí, está ordenado). Lo que necesito es transponer estos datos, según la primera columna, por lo que la salida esperada sería:

TABLENAME1|COL1|COL2|NULL
TABLENAME2|COL1|COL2|COL3
TABLENAME3|COL1|NULL|NULL
TABLENAME4|COL1|COL2|NULL
/* less then 1800 rows ;-) */

¿Es posible usar Oracle SQL?

¡Gracias por adelantado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta