select *
from (select id1,
name1,
lead(id2, 1) over(order by null) id2,
lead(name2, 1) over(order by null) name2
from (select id1, name1, id2, name2
from (select 1 r, 10 id, 'a' name
from dual
union
select 2 r, 15 id, 'b' name
from dual
union
select 3 r, 20 id, 'c' name
from dual
union
select 4 r, 25 id, 'd' name
from dual
union
select 5 r, 30 id, 'e' name
from dual) model
dimension by(r, id, name)
measures(0 id1,
cast(null as varchar2(255)) name1, 0 id2,
cast(null as varchar2(255)) name2)
rules(id1 [ mod(r, 2) != 0, id, name ] = cv(id),
id2 [ mod(r, 2) = 0, id, name ] = cv(id),
name1 [ mod(r, 2) != 0, id, name ] = cv(name),
name2 [ mod(r, 2) = 0, id, name ] = cv(name))))
where id1 != 0