with tmp (s_page) as (select 1 from dual union all select 3 from dual union all select 4 from dual union all select 5 from dual union all select 6 from dual union all select 7 from dual union all select 14 from dual union all select 16 from dual) select t.s_page, nvl(lead(t.s_page) over(order by s_page) - 1, t.s_page) as e_page from tmp t
with tmp as (select 1 s_page from dual union all select 3 from dual union all select 4 from dual union all select 5 from dual union all select 6 from dual union all select 7 from dual union all select 14 from dual union all select 16 from dual) select t.s_page, nvl(lead(t.s_page) over(order by s_page) - 1, t.s_page) as e_page from tmp t
这个可以~with tmp as (select 1 s_page from dual union all select 3 from dual union all select 4 from dual union all select 5 from dual union all select 6 from dual union all select 7 from dual union all select 14 from dual union all select 16 from dual) select t.s_page, nvl(lead(t.s_page) over(order by s_page) - 1, t.s_page) as e_page from tmp t
(select 1 from dual union all
select 3 from dual union all
select 4 from dual union all
select 5 from dual union all
select 6 from dual union all
select 7 from dual union all
select 14 from dual union all
select 16 from dual)
select t.s_page,
nvl(lead(t.s_page) over(order by s_page) - 1, t.s_page) as e_page
from tmp t
(select 1 s_page from dual union all
select 3 from dual union all
select 4 from dual union all
select 5 from dual union all
select 6 from dual union all
select 7 from dual union all
select 14 from dual union all
select 16 from dual)
select t.s_page,
nvl(lead(t.s_page) over(order by s_page) - 1, t.s_page) as e_page
from tmp t
(select 1 s_page from dual union all
select 3 from dual union all
select 4 from dual union all
select 5 from dual union all
select 6 from dual union all
select 7 from dual union all
select 14 from dual union all
select 16 from dual)
select t.s_page,
nvl(lead(t.s_page) over(order by s_page) - 1, t.s_page) as e_page
from tmp t