Cara, gostei do probleminha.
Não tenho a apresentação do resultado como você gostaria mas acredito que seja a forma mais adequada de se trabalhar com eles.
Criei "2 tabelas" com os valores unitários, excluindo o range, uma com todos os valores da tabela A e outra com a B e pude realizar a diferença (MINUS).
Selecionar tudo
with tabela_a as
(select 112010 p , 0 inicial ,999 final from dual
union all
select 112010 p , 1000 inicial ,1999 final from dual
union all
select 112010 p , 2000 inicial ,2999 final from dual
union all
select 112010 p , 3000 inicial ,3999 final from dual
union all
select 112010 p , 4000 inicial ,4999 final from dual
union all
select 112010 p , 5000 inicial ,5999 final from dual
union all
select 112010 p , 6000 inicial ,6999 final from dual
union all
select 112010 p , 7000 inicial ,7999 final from dual
union all
select 112010 p , 8000 inicial ,8999 final from dual
union all
select 112010 p , 9000 inicial ,9999 final from dual
-----
union all
select 112060 p , 0 inicial ,999 final from dual
union all
select 112060 p , 1000 inicial ,1999 final from dual
union all
select 112060 p , 2000 inicial ,2999 final from dual
union all
select 112060 p , 3000 inicial ,3999 final from dual
union all
select 112060 p , 4000 inicial ,4999 final from dual
union all
select 112060 p , 5000 inicial ,5999 final from dual
union all
select 112060 p , 6000 inicial ,6999 final from dual
union all
select 112060 p , 7000 inicial ,7999 final from dual
union all
select 112060 p , 8000 inicial ,8999 final from dual
union all
select 112060 p , 9000 inicial ,9999 final from dual
)
,tabela_b as
(
select 112010 p , 0 inicial ,4999 final from dual
union all
select 112010 p , 7000 inicial ,9999 final from dual
union all
select 112060 p , 0 inicial , 1999 final from dual
union all
select 112060 p , 2000 inicial ,8999 final from dual
union all
select 112060 p , 9000 inicial ,9999 final from dual
)
SELECT a.p
, x.valor
FROM (SELECT t.menor + LEVEL - 1 valor
FROM (SELECT MIN(a.inicial) menor , MAX(a.final) maior FROM tabela_a a) t
CONNECT BY LEVEL <= t.maior - t.menor + 1) x
, tabela_a a
where x.valor between a.inicial and a.final
MINUS
SELECT b.p
, x.valor
FROM (SELECT t.menor + LEVEL - 1 valor
FROM (SELECT MIN(b.inicial) menor , MAX(b.final) maior FROM tabela_b b) t
CONNECT BY LEVEL <= t.maior - t.menor + 1) x
, tabela_b b
where x.valor between b.inicial and b.final
order by 1 , 2
;
OBS:No seu caso pode desconsiderar toda clausula with (pois você tem as tabelas e dados e eu não).