Depois de obter o Oracle 11G, há um recurso PIVOT integrado. Antes disso, você está restrito a usar expressões CASE (ou DECODE). Eu tenho um artigo sobre como automatizar isso no meu blog.