Você pode fazer assim:
select col1 from table union
select col2 from table union
. . .
select coln from table;
O uso de
union
remove valores duplicados. Observe que isso pressupõe que os tipos de coluna sejam compatíveis (como todos sendo strings). EDITAR:
Se a coluna em uma tabela tiver que ter apenas um tipo. (Ok, poderia ser uma variante, mas isso provavelmente não é uma simplificação.) Você pode converter tudo para
varchar2()
:select cast(col1 as varchar2(255)) from table union
select cast(col2 as varchar2(255)) from table union
. . .
select cast(coln as varchar2(255)) from table;
Como alternativa, você pode agrupar as colunas por tipo de dados e fazer uma execução separada para cada uma ou uma coluna separada para cada tipo de dados. É improvável que você tenha correspondências exatas entre os tipos de dados, portanto, isso pode atender às suas necessidades.