I have a query which i cannot seem to get right. I want to change teh result set so it is 1 coloumn and can be N amount of rows.
original query
select src_approval, dst_approval
from example_table
where id = 62615
group by src_approval, dst_approval
I tried the following which is not correct.
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
I tried the following which still gives me 2 columns
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)
)
RESULT
select *
from (
select src_approval, dst_approval
from e_p
where exemption_id = 62615
group by src_approval, dst_approval
)
unpivot
( owner
for approval in (src_approval, dst_approval)
)
# Answer 1
Yes, you can still use unpivot as
select colvalue from
(
select id, colvalue, col
from example_table
unpivot(colvalue for col in(src_approval,dst_approval))
)
where id = 62615
# Answer 2
If you are considering unpivot, you can use a lateral join:
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;
More commonly, this would just be written using union:
select et.src_approval
from example_table et
union -- on purpose to remove duplicates
select et.dst_approval
from example_table et;