В Oracle 12c + вы можете использовать боковое соединение:
select x.attribute_char
from t cross apply
(select attribute_char1 as attribute_char from dual union all
select attribute_char2 as attribute_char from dual union all
select attribute_char3 as attribute_char from dual
) x;
Вы также можете использовать case
в любой версии Oracle:
select (case when n.n = 1 then attribute_char1
when n.n = 2 then attribute_char2
when n.n = 3 then attribute_char3
end) as attribute_char
from t cross join
(select 1 as n from dual union all
select 2 as n from dual union all
select 3 as n from dual
) n;
Преимущество этих подходов состоит в том, что таблица сканируется только один раз. Это может быть особенно важно, если «таблица» действительно сложный запрос или представление.