Tengo el siguiente problema.
Tengo estas 2 tablas.
Tabla A
Periodo YYYYMM char(6)
Fecha DD-MM-YYYY date
Tabla B
Periodo YYYYMM char(6)
F_Inicio DD-MM-YYYY date
F_Final DD-MM-YYYY date
id Num varchar2(16)
Plazo Num number(5,0)
El campo Periodo de la Tabla B se define como la fecha de Inicio hasta la fecha Final ( F_Inicio , F_Final)
Necesito encontrar los Periodos de la tabla A que no están en la TablaB para cada ID de la TablaB.
Logre encontrar los que no están pero cuando quiero que me muestre Periodo ( el que falta) y ID, la query no me entrega datos.
Note también este ejemplo: Sea ID=123456 F_Inicio= 01-03-2012 F_Final=01-10-2012 Se asume que debiese existir Pediodos desde '201203' hasta '201210'. pero ID=123456 solo tiene por ejemplo el periodo 201204 y 201207 , entonces quiero encontrar todos los otros periodos que debiesen aparecer para ese ID respecto a sus fechas de inicio y fechas final.
Alguien podría ayudarme al respecto? he tratado por mas de una semana hacerlo aun sin buenos resultados.
Hasta ahora tengo algo así pero sin resultados:
with eq as (
select distinct M.periodo, M.id
from TablaB M
WHERE M.periodo between to_number(to_char(M.F_Inicio,'yyyyMM')) and to_number(to_char(M.F_Final,'yyyyMM'))
and M.id = '100000007'
order by M.periodo desc)
select eq.periodo, x.id
from TablaB x, TablaA a, eq
where eq.periodo is not null
and not exists (
select 1
from TablaB
where periodo= eq.periodo
and id = '100000007'
)
and x.id = '100000007'
and a.periodo= eq.periodo
and x.periodo= eq.periodo
and a.periodo= x.periodo
order by eq.periodo desc;
Muchas gracias!!
ACR