Я думаю, что для разворота данных, игнорируя 0
значения.
Рассмотрим:
select
row_number() over(order by t.id, t.seq) id,
t.item
from (
select id, 1 seq, item1 item from mytable where item1 <> '0'
union all select id, 2, item2 from mytable where item2 <> '0'
) t
order by t.id, t.seq