Můžete to udělat takto:
select col1 from table union
select col2 from table union
. . .
select coln from table;
Použití union
odstraní duplicitní hodnoty. Všimněte si, že to předpokládá, že typy sloupců jsou kompatibilní (například všechny jsou řetězce).
EDIT:
Pokud sloupec v tabulce musí mít pouze jeden typ. (Dobře, mohlo být variantou, ale to pravděpodobně není zjednodušení.) Vše můžete přetypovat do 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;
Případně můžete seskupit sloupce podle datového typu a provést samostatný běh pro každý z nich nebo samostatný sloupec pro každý datový typ. Je nepravděpodobné, že budete mít přesné shody napříč datovými typy, takže to může vyhovovat vašim potřebám.