как переместить 2 строки 1 ряд в 1 столб 2 строки в оракуле - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть запрос, который я не могу понять, правильно. Я хочу изменить набор результатов, чтобы он составлял 1 столбец и мог содержать N строк.

оригинальный запрос

select src_approval, dst_approval
from example_table
where id = 62615
group by src_approval, dst_approval

Я попробовал следующее, что не правильно.

select src_approval, dst_approval
from example_table
unpivot
( colvalue for col in (src_approval, dst_approval) )
where id = 62615
group by src_approval, dst_approval

Я попробовал следующее, которое все еще дает мне 2 столбца

select *
from   ( 
select src_approval, dst_approval
from example_table
where id= 62615
group by src_approval, dst_approval
)
 unpivot
       ( income_component_value
         for income_component_type in (src_approval, dst_approval)
       )

РЕЗУЛЬТАТ

select *
from   ( 
select src_approval, dst_approval
from exemption_policies
where exemption_id = 62615
group by src_approval, dst_approval
)
 unpivot
       ( owner
         for approval in (src_approval, dst_approval)
       )

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Да, вы все еще можете использовать unpivot как

select colvalue from 
(
select id, colvalue, col
  from example_table   
  unpivot(colvalue for col in(src_approval,dst_approval))
)  
where id = 62615

Демо

1 голос
/ 06 ноября 2019

Если вы рассматриваете unpivot, вы можете использовать боковое соединение:

select distinct x.dte
from example_table et cross join lateral
     (select et.src_approval as dte from dual union all
      select et.dst_approval as dte from dual
     ) x
where id = 62615;

Чаще всего это пишется с использованием union:

select et.src_approval
from example_table et
union     -- on purpose to remove duplicates
select et.dst_approval
from example_table et;
...