Buenas noches,
Tengo un problema al realizar una MERGE en plsql,
Este es el código de la merge
MERGE
/*+ APPEND */
INTO H_INCID_DESCARGA HID USING
(SELECT
/*+ PARALLEL(A,6,1) PARALLEL(C,6,1) PARALLEL(D,6,1) */
DISTINCT
A.COD_PROVR_GEN,
A.COD_PROVR_TRABAJO,
A.COD_LOC_PROVR,
A.COD_CAB_PEDIDO,
C.ALMACEN,
A.COD_LOC,
A.NUM_PEDIDO,
COD_N1_LOGIS,
NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),99990101)) DIA,
NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00') HORA_INICIO,
TO_NUMBER(TO_CHAR(C.F_LLEGADA,'YYYYMMDD')) F_LLEGADA,
TO_CHAR(TO_DATE(C.H_LLEGADA,'HH24:MI'),'HH24:MI') H_LLEGADA,
--ANTONIO---
CASE
WHEN A.COD_LOC = 2054
THEN TO_NUMBER(TO_CHAR(CK.FECHA_REAL,'YYYYMMDD'))
ELSE
TO_NUMBER(TO_CHAR(C.F_LLAMADA,'YYYYMMDD'))
END F_LLAMADA,
--ANTONIO--
--ANTONIO--
CASE
WHEN A.COD_LOC = 2054
THEN SUBSTR(CK.HORA_REAL,-8,5)
ELSE
TO_CHAR(TO_DATE(C.H_LLAMADA,'HH24:MI'),'HH24:MI')
END H_LLAMADA,
--ANTONIO--
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
THEN TO_NUMBER(TO_CHAR(A.CEN_FECFIN,'YYYYMMDD'))
ELSE A.FECHA_CIERRE_ALB
END F_CIERRE_ALB,
A.HORA_CIERRE_ALB,
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
AND
--antonio--
(A.HORA_CIERRE_ALB > (to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || to_char(A.CEN_FECFIN,'MI'))) OR A.CEN_FECFIN IS NULL
THEN NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'), 3,4),'00')
ELSE to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || ':' || to_char(A.CEN_FECFIN,'MI')
--antonio--
END H_CIERRE_ALB,
NVL2(H.COD_LOC,NVL2(I.COD_LOC,'S','N'),'N') COD_MARCA_GT,
DECODE(A.COD_TP_INCOTERM,1,'S','N') FLG_EXWORK,
NVL2(C.F_LLEGADA,'S','N') FLG_RECIBIDO,
CASE
WHEN A.COD_LOC <> 2054
THEN
NVL2(C.F_LLAMADA,'S','N')
ELSE
NVL2(CK.FECHA_REAL,'S','N')
END FLG_DESCARGADO,
NVL(F.COD_AGRUPACION,A.COD_AGRUPACION) COD_AGRUPACION,
C.AGENCIA COD_AGENCIA ,
C.OBSERVACIONES,
CASE WHEN
C.F_LLEGADA IS NULL OR C.H_LLEGADA IS NULL OR
(A.COD_LOC IN (6987, 6556, 6946) AND (E.DTMREC IS NULL OR E.HEMREC IS NULL)) OR
(A.COD_LOC NOT IN (6987, 6556, 6946) AND
(F.FEC_JORNADA IS NULL OR F.HORA_INICIO IS NULL)) OR
A.FEC_ENTREGA_DESDE IS NULL
THEN
'S'
ELSE
CASE
WHEN (TO_DATE(TO_CHAR(C.F_LLEGADA,'YYYYMMDD')
|| C.H_LLEGADA,'YYYYMMDDHH24:MI') - TO_DATE( TO_CHAR(NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),10010101)) )
|| NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00'), 'YYYYMMDDHH24:MI')) *24 *60 <= 30
THEN 'S'
ELSE 'N'
END
END FLG_CUMPLE_PARRILLA,
CASE WHEN
(A.COD_LOC IN (8384, 2308, 6189, 2056) AND (A.CEN_FECFIN IS NULL)) OR
(A.COD_LOC NOT IN (8384, 2308, 6189, 2056) AND
(A.FECHA_CIERRE_ALB IS NULL OR A.HORA_CIERRE_ALB IS NULL OR A.HORA_CIERRE_ALB = 0)) or
C.H_LLAMADA IS NULL OR C.F_LLAMADA IS NULL
THEN 'S'
ELSE
CASE
WHEN ( TO_DATE(
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
THEN TO_CHAR(A.CEN_FECFIN,'YYYYMMDD')
ELSE TO_CHAR(A.FECHA_CIERRE_ALb)
END
||
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
AND
--antonio--
(A.HORA_CIERRE_ALB > (to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || to_char(A.CEN_FECFIN,'MI'))) OR A.CEN_FECFIN IS NULL
THEN NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'), 3,4),'00')
ELSE to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || ':' || to_char(A.CEN_FECFIN,'MI')
--antonio--
END ,'YYYYMMDDHH24:MI')
-
CASE
WHEN A.COD_LOC = 2051
THEN
TO_DATE(TO_CHAR(CK.FECHA_REAL,'YYYYMMDD')
|| SUBSTR(CK.HORA_REAL,-8,5),'YYYYMMDDHH24:MI')
ELSE
TO_DATE( TO_CHAR(C.F_LLAMADA,'YYYYMMDD')
|| TO_CHAR(to_date(C.H_LLAMADA,'HH24:MI'),'HH24:MI') ,'YYYYMMDDHH24:MI')
END ) * 24 <= 2
THEN 'S'
ELSE 'N'
END
END FLG_CUMPLE_DESCARGA,
CASE WHEN (A.COD_LOC IN (8384, 2308, 6189, 2056) AND (A.CEN_FECFIN IS NULL)) OR
(A.COD_LOC NOT IN (8384, 2308, 6189, 2056) AND
(A.FECHA_CIERRE_ALB IS NULL OR A.FECHA_CIERRE_ALB = 0 or A.HORA_CIERRE_ALB IS NULL)) OR
C.H_LLEGADA IS NULL OR C.F_LLEGADA IS NULL
THEN 'S' ELSE
CASE
WHEN ( TO_DATE(
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
THEN TO_CHAR(A.CEN_FECFIN,'YYYYMMDD')
ELSE TO_CHAR(A.FECHA_CIERRE_ALb)
END
||
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
--antonio--
AND
(A.HORA_CIERRE_ALB > (to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || to_char(A.CEN_FECFIN,'MI'))) OR A.CEN_FECFIN IS NULL
THEN NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'), 3,4),'00')
ELSE to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || ':' || to_char(A.CEN_FECFIN,'MI')
--antonio--
END ,'YYYYMMDDHH24:MI') -
CASE WHEN
TO_DATE( TO_CHAR(C.F_LLEGADA,'YYYYMMDD')
|| TO_CHAR(to_date(C.H_LLEGADA,'HH24:MI'),'HH24:MI') ,'YYYYMMDDHH24:MI') <
TO_DATE(
NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),99990101)) ||
NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00'),'YYYYMMDDHH24:MI') THEN
TO_DATE(
NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),99990101)) ||
NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00'),'YYYYMMDDHH24:MI')
ELSE
TO_DATE( TO_CHAR(C.F_LLEGADA,'YYYYMMDD')
|| TO_CHAR(to_date(C.H_LLEGADA,'HH24:MI'),'HH24:MI') ,'YYYYMMDDHH24:MI') END ) * 24 <= 2
THEN 'S'
ELSE 'N'
END
END FLG_CUMPLE_KPI5
FROM
(SELECT
/*+ PARALLEL(A,6,1) PARALLEL(B,6,1) */
A.COD_PROVR_GEN,
A.COD_PROVR_TRABAJO,
A.COD_LOC_PROVR,
A.COD_CAB_PEDIDO,
A.COD_LOC,
A.COD_CAB_PEDIDO NUM_PEDIDO,
MAX(B.HORA_CIERRE_ALB) HORA_CIERRE_ALB,
MAX(B.FECHA_CIERRE_ALB) FECHA_CIERRE_ALB,
A.FEC_ENTREGA_DESDE,
A.COD_AGRUPACION,
A.COD_TP_INCOTERM,
MAX(NVL(b.cod_art,D.COD_ART)) COD_ART,
MAX(C.CEN_FECFIN) CEN_FECFIN
FROM [email protected] a,
(
SELECT COD_LOC, num_pedido, max(hora_cierre_alb),COD_ART, hora_CIERRE_ALB,FECHA_CIERRE_ALB FROM
(SELECT COD_LOC, num_pedido, NVL(HORA_CIERRE_ALB,0) HORA_CIERRE_ALB,COD_ART,FECHA_CIERRE_ALB FROM [email protected])
GROUP BY COD_LOC, num_pedido,COD_ART,FECHA_CIERRE_ALB,hora_CIERRE_ALB)
b,
(SELECT COD_LOC, CEN_PEDIDO, CEN_FECFIN
FROM [email protected] WHERE CEN_FECFIN IS NOT NULL) C ,
[email protected] D
WHERE a.cod_cab_pedido = b.num_pedido(+)
AND A.COD_LOC = B.COD_LOC(+)
AND A.COD_CAB_PEDIDO = D.NUM_PEDIDO(+)
AND A.COD_LOC = D.COD_LOC(+)
AND a.cod_est_ped <> 3
AND (A.COD_PROVR_GEN IS NOT NULL
OR A.COD_LOC_PROVR <> 361)
AND A.COD_LOC = C.COD_LOC(+)
AND A.COD_CAB_PEDIDO = C.CEN_PEDIDO(+)
GROUP BY A.COD_PROVR_GEN,
A.COD_PROVR_TRABAJO,
A.COD_LOC_PROVR,
A.COD_CAB_PEDIDO,
A.COD_LOC,
A.COD_CAB_PEDIDO,
A.FEC_ENTREGA_DESDE,
A.COD_AGRUPACION,
A.COD_TP_INCOTERM
) A,
[email protected] c,
[email protected] D,
--antonio--
(SELECT A.ALMACEN,A.COD_PEDIDO,A.FECHA_PEDIDO,A.FECHA_REAL,
A.COD_LOC , A.COD_PROVEEDOR, MAX(HORA_REAL) AS HORA_REAL
FROM [email protected] A ,
(SELECT ALMACEN,COD_PEDIDO,FECHA_PEDIDO,MAX(FECHA_REAL) AS FECHA_REAL, COD_LOC ,
COD_PROVEEDOR FROM [email protected] group by ALMACEN, COD_PEDIDO, FECHA_PEDIDO, COD_LOC, COD_PROVEEDOR ) B
WHERE A.COD_LOC = 2054
AND A.ALMACEN = B.ALMACEN
AND A.COD_PEDIDO = B.COD_PEDIDO
AND A.FECHA_PEDIDO = B.FECHA_PEDIDO
AND A.FECHA_REAL = B.FECHA_REAL
AND A.COD_LOC = B.COD_LOC
AND A.COD_PROVEEDOR = B.COD_PROVEEDOR
group by A.ALMACEN, A.COD_PEDIDO, A.FECHA_PEDIDO, A.COD_LOC, A.FECHA_REAL,
A.COD_PROVEEDOR) CK,
--antonio--
(SELECT COD_LOC,
ETAREC,
MAX(DTMREC) DTMREC,
MAX(HEMREC) HEMREC,
REFREC_CALC
FROM
(SELECT
/*+ PARALLEL(A,6,1) */
A.COD_LOC,
A.ETAREC,
A.DTMREC DTMREC,
A.HEMREC HEMREC,
SUBSTR(A.REFREC,REGEXP_INSTR(A.REFREC, '[0-9]'), LENGTH(A.REFREC)-2) REFREC_CALC
FROM [email protected] A
)
GROUP BY COD_LOC,
ETAREC,
REFREC_CALC
) E,
REGISTROS_PARRILLA_N_SIA F,
PCO_MARCA_GT@pgredapr H,
PCO_MARCA_GT@pgredapr I
WHERE A.COD_LOC = C.PLATAFORMA
AND A.NUM_PEDIDO = C.COD_PEDIDO
AND A.COD_ART = D.COD_ART(+)
AND A.COD_LOC = E.COD_LOC(+)
AND A.COD_LOC = CK.COD_LOC(+)
AND A.NUM_PEDIDO = CK.COD_PEDIDO(+)
AND CK.COD_PROVEEDOR(+) = A.COD_PROVR_GEN || LPAD(A.COD_PROVR_TRABAJO,4+LENGTH(A.COD_PROVR_TRABAJO)-LENGTH(A.COD_PROVR_TRABAJO),'0')
AND A.NUM_PEDIDO = E.REFREC_CALC (+)
AND '50' = E.ETAREC(+)
AND A.COD_LOC = F.COD_LOC(+)
AND A.NUM_PEDIDO = F.COD_CAB_PEDIDO(+)
AND ((F.COD_PROVR_GEN = H.COD_PROVR_GEN(+)
AND F.COD_PROVR_TRABAJO = H.COD_PROVR_TRABAJO(+)
AND F.COD_LOC = H.COD_LOC(+))
AND (F.COD_LOC_PROVR = I.COD_LOC_PROVR(+)
AND 361 = I.COD_LOC_PROVR(+)
AND F.COD_LOC = I.COD_LOC(+) )
)) IID
ON
(HID.COD_PROV = IID.COD_PROVR_GEN
AND HID.COD_CORREL = IID.COD_PROVR_TRABAJO
AND HID.COD_LOC = IID.COD_LOC
AND HID.NUM_PEDIDO = IID.COD_CAB_PEDIDO)
WHEN MATCHED THEN
UPDATE
SET HID.COD_ALM = IID.ALMACEN ,
HID.COD_N1_LOG = IID.COD_N1_LOGIS ,
HID.DIA = IID.DIA ,
HID.HORA_INICIO = IID.HORA_INICIO ,
HID.FEC_LLEGADA = IID.F_LLEGADA ,
HID.H_LLEGADA = IID.H_LLEGADA ,
HID.FEC_LLAMADA = IID.F_LLAMADA ,
HID.H_LLAMADA = nvl(IID.H_LLAMADA, '00:00') ,
HID.F_CIERRE_ALB = IID.F_CIERRE_ALB ,
HID.H_CIERRE_ALB = IID.H_CIERRE_ALB ,
HID.COD_MARCA_GT = IID.COD_MARCA_GT ,
HID.FLG_EXWORK = IID.FLG_EXWORK ,
HID.FLG_RECIBIDO = IID.FLG_RECIBIDO ,
HID.FLG_DESCARGADO = IID.FLG_DESCARGADO ,
HID.COD_AGRUPACION = IID.COD_AGRUPACION ,
HID.COD_AGENCIA = IID.COD_AGENCIA ,
HID.OBSERV = IID.OBSERVACIONES ,
HID.FLG_CUMPLE_PARRILLA = IID.FLG_CUMPLE_PARRILLA ,
HID.FLG_CUMPLE_DESCARGA = IID.FLG_CUMPLE_DESCARGA ,
HID.FLG_CUMPLE_KPI5 = IID.FLG_CUMPLE_KPI5
WHEN NOT MATCHED THEN
INSERT
(
COD_PROV,
COD_CORREL,
COD_LOC,
NUM_PEDIDO,
COD_ALM,
COD_N1_LOG,
DIA,
HORA_INICIO,
FEC_LLEGADA,
H_LLEGADA,
FEC_LLAMADA,
H_LLAMADA,
F_CIERRE_ALB,
H_CIERRE_ALB,
COD_MARCA_GT,
FLG_EXWORK,
FLG_RECIBIDO,
FLG_DESCARGADO,
COD_AGRUPACION,
COD_AGENCIA,
OBSERV,
FLG_CUMPLE_PARRILLA,
FLG_CUMPLE_DESCARGA,
FLG_CUMPLE_KPI5,
FEC_MODIF
)
VALUES
(
IID.COD_PROVR_GEN,
IID.COD_PROVR_TRABAJO,
IID.COD_LOC,
IID.COD_CAB_PEDIDO,
IID.ALMACEN,
IID.COD_N1_LOGIS,
IID.DIA,
IID.HORA_INICIO,
IID.F_LLEGADA,
IID.H_LLEGADA,
IID.F_LLAMADA,
nvl(IID.H_LLAMADA, '00:00'),
IID.F_CIERRE_ALB,
IID.H_CIERRE_ALB,
IID.COD_MARCA_GT,
IID.FLG_EXWORK,
IID.FLG_RECIBIDO,
IID.FLG_DESCARGADO,
IID.COD_AGRUPACION,
IID.COD_AGENCIA,
IID.OBSERVACIONES,
IID.FLG_CUMPLE_PARRILLA,
IID.FLG_CUMPLE_DESCARGA,
IID.FLG_CUMPLE_KPI5,
V_N_FECHA_PROCESO
);
Esta es la select de la Merge;
SELECT
/*+ PARALLEL(A,6,1) PARALLEL(C,6,1) PARALLEL(D,6,1) */
DISTINCT
A.COD_PROVR_GEN,
A.COD_PROVR_TRABAJO,
A.COD_LOC_PROVR,
A.COD_CAB_PEDIDO,
C.ALMACEN,
A.COD_LOC,
A.NUM_PEDIDO,
COD_N1_LOGIS,
NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),99990101)) DIA,
NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00') HORA_INICIO,
TO_NUMBER(TO_CHAR(C.F_LLEGADA,'YYYYMMDD')) F_LLEGADA,
TO_CHAR(TO_DATE(C.H_LLEGADA,'HH24:MI'),'HH24:MI') H_LLEGADA,
--ANTONIO---
CASE
WHEN A.COD_LOC = 2054
THEN TO_NUMBER(TO_CHAR(CK.FECHA_REAL,'YYYYMMDD'))
ELSE
TO_NUMBER(TO_CHAR(C.F_LLAMADA,'YYYYMMDD'))
END F_LLAMADA,
--ANTONIO--
--ANTONIO--
CASE
WHEN A.COD_LOC = 2054
THEN SUBSTR(CK.HORA_REAL,-8,5)
ELSE
TO_CHAR(TO_DATE(C.H_LLAMADA,'HH24:MI'),'HH24:MI')
END H_LLAMADA,
--ANTONIO--
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
THEN TO_NUMBER(TO_CHAR(A.CEN_FECFIN,'YYYYMMDD'))
ELSE A.FECHA_CIERRE_ALB
END F_CIERRE_ALB,
A.HORA_CIERRE_ALB,
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
AND
--antonio--
(A.HORA_CIERRE_ALB > (to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || to_char(A.CEN_FECFIN,'MI'))) OR A.CEN_FECFIN IS NULL
THEN NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'), 3,4),'00')
ELSE to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || ':' || to_char(A.CEN_FECFIN,'MI')
--antonio--
END H_CIERRE_ALB,
NVL2(H.COD_LOC,NVL2(I.COD_LOC,'S','N'),'N') COD_MARCA_GT,
DECODE(A.COD_TP_INCOTERM,1,'S','N') FLG_EXWORK,
NVL2(C.F_LLEGADA,'S','N') FLG_RECIBIDO,
CASE
WHEN A.COD_LOC <> 2054
THEN
NVL2(C.F_LLAMADA,'S','N')
ELSE
NVL2(CK.FECHA_REAL,'S','N')
END FLG_DESCARGADO,
NVL(F.COD_AGRUPACION,A.COD_AGRUPACION) COD_AGRUPACION,
C.AGENCIA COD_AGENCIA ,
C.OBSERVACIONES,
CASE WHEN
C.F_LLEGADA IS NULL OR C.H_LLEGADA IS NULL OR
(A.COD_LOC IN (6987, 6556, 6946) AND (E.DTMREC IS NULL OR E.HEMREC IS NULL)) OR
(A.COD_LOC NOT IN (6987, 6556, 6946) AND
(F.FEC_JORNADA IS NULL OR F.HORA_INICIO IS NULL)) OR
A.FEC_ENTREGA_DESDE IS NULL
THEN
'S'
ELSE
CASE
WHEN (TO_DATE(TO_CHAR(C.F_LLEGADA,'YYYYMMDD')
|| C.H_LLEGADA,'YYYYMMDDHH24:MI') - TO_DATE( TO_CHAR(NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),10010101)) )
|| NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00'), 'YYYYMMDDHH24:MI')) *24 *60 <= 30
THEN 'S'
ELSE 'N'
END
END FLG_CUMPLE_PARRILLA,
CASE WHEN
(A.COD_LOC IN (8384, 2308, 6189, 2056) AND (A.CEN_FECFIN IS NULL)) OR
(A.COD_LOC NOT IN (8384, 2308, 6189, 2056) AND
(A.FECHA_CIERRE_ALB IS NULL OR A.HORA_CIERRE_ALB IS NULL OR A.HORA_CIERRE_ALB = 0)) or
C.H_LLAMADA IS NULL OR C.F_LLAMADA IS NULL
THEN 'S'
ELSE
CASE
WHEN ( TO_DATE(
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
THEN TO_CHAR(A.CEN_FECFIN,'YYYYMMDD')
ELSE TO_CHAR(A.FECHA_CIERRE_ALb)
END
||
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
AND
--antonio--
(A.HORA_CIERRE_ALB > (to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || to_char(A.CEN_FECFIN,'MI'))) OR A.CEN_FECFIN IS NULL
THEN NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'), 3,4),'00')
ELSE to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || ':' || to_char(A.CEN_FECFIN,'MI')
--antonio--
END ,'YYYYMMDDHH24:MI')
-
CASE
WHEN A.COD_LOC = 2051
THEN
TO_DATE(TO_CHAR(CK.FECHA_REAL,'YYYYMMDD')
|| SUBSTR(CK.HORA_REAL,-8,5),'YYYYMMDDHH24:MI')
ELSE
TO_DATE( TO_CHAR(C.F_LLAMADA,'YYYYMMDD')
|| TO_CHAR(to_date(C.H_LLAMADA,'HH24:MI'),'HH24:MI') ,'YYYYMMDDHH24:MI')
END ) * 24 <= 2
THEN 'S'
ELSE 'N'
END
END FLG_CUMPLE_DESCARGA,
CASE WHEN (A.COD_LOC IN (8384, 2308, 6189, 2056) AND (A.CEN_FECFIN IS NULL)) OR
(A.COD_LOC NOT IN (8384, 2308, 6189, 2056) AND
(A.FECHA_CIERRE_ALB IS NULL OR A.FECHA_CIERRE_ALB = 0 or A.HORA_CIERRE_ALB IS NULL)) OR
C.H_LLEGADA IS NULL OR C.F_LLEGADA IS NULL
THEN 'S' ELSE
CASE
WHEN ( TO_DATE(
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
THEN TO_CHAR(A.CEN_FECFIN,'YYYYMMDD')
ELSE TO_CHAR(A.FECHA_CIERRE_ALb)
END
||
CASE
WHEN A.COD_LOC IN (8384, 2308, 6189, 2056)
--antonio--
AND
(A.HORA_CIERRE_ALB > (to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || to_char(A.CEN_FECFIN,'MI'))) OR A.CEN_FECFIN IS NULL
THEN NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(a.HORA_CIERRE_ALB),4,'0'), 3,4),'00')
ELSE to_number(TO_CHAR(A.CEN_FECFIN,'HH24')) || ':' || to_char(A.CEN_FECFIN,'MI')
--antonio--
END ,'YYYYMMDDHH24:MI') -
CASE WHEN
TO_DATE( TO_CHAR(C.F_LLEGADA,'YYYYMMDD')
|| TO_CHAR(to_date(C.H_LLEGADA,'HH24:MI'),'HH24:MI') ,'YYYYMMDDHH24:MI') <
TO_DATE(
NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),99990101)) ||
NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00'),'YYYYMMDDHH24:MI') THEN
TO_DATE(
NVL(
CASE
WHEN (A.COD_LOC IN (6987, 6556, 6946))
THEN E.DTMREC
ELSE to_number(TO_CHAR(F.FEC_JORNADA,'YYYYMMDD') )
END, NVL(TO_NUMBER(TO_CHAR(A.FEC_ENTREGA_DESDE,'YYYYMMDD')),99990101)) ||
NVL(
CASE
WHEN A.COD_LOC IN (6987, 6556, 6946)
THEN NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),0,2),'00')
|| ':'
|| NVL(SUBSTR(LPAD(TO_CHAR(E.HEMREC),4,'0'),3,4),'00')
ELSE NVL(F.HORA_INICIO,'00:00')
END, '00:00'),'YYYYMMDDHH24:MI')
ELSE
TO_DATE( TO_CHAR(C.F_LLEGADA,'YYYYMMDD')
|| TO_CHAR(to_date(C.H_LLEGADA,'HH24:MI'),'HH24:MI') ,'YYYYMMDDHH24:MI') END ) * 24 <= 2
THEN 'S'
ELSE 'N'
END
END FLG_CUMPLE_KPI5
FROM
(SELECT
/*+ PARALLEL(A,6,1) PARALLEL(B,6,1) */
A.COD_PROVR_GEN,
A.COD_PROVR_TRABAJO,
A.COD_LOC_PROVR,
A.COD_CAB_PEDIDO,
A.COD_LOC,
A.COD_CAB_PEDIDO NUM_PEDIDO,
MAX(B.HORA_CIERRE_ALB) HORA_CIERRE_ALB,
MAX(B.FECHA_CIERRE_ALB) FECHA_CIERRE_ALB,
A.FEC_ENTREGA_DESDE,
A.COD_AGRUPACION,
A.COD_TP_INCOTERM,
MAX(NVL(b.cod_art,D.COD_ART)) COD_ART,
MAX(C.CEN_FECFIN) CEN_FECFIN
FROM [email protected] a,
(
SELECT COD_LOC, num_pedido, max(hora_cierre_alb),COD_ART, hora_CIERRE_ALB,FECHA_CIERRE_ALB FROM
(SELECT COD_LOC, num_pedido, NVL(HORA_CIERRE_ALB,0) HORA_CIERRE_ALB,COD_ART,FECHA_CIERRE_ALB FROM [email protected])
GROUP BY COD_LOC, num_pedido,COD_ART,FECHA_CIERRE_ALB,hora_CIERRE_ALB)
b,
(SELECT COD_LOC, CEN_PEDIDO, CEN_FECFIN
FROM [email protected] WHERE CEN_FECFIN IS NOT NULL) C ,
[email protected] D
WHERE a.cod_cab_pedido = b.num_pedido(+)
AND A.COD_LOC = B.COD_LOC(+)
AND A.COD_CAB_PEDIDO = D.NUM_PEDIDO(+)
AND A.COD_LOC = D.COD_LOC(+)
AND a.cod_est_ped <> 3
AND (A.COD_PROVR_GEN IS NOT NULL
OR A.COD_LOC_PROVR <> 361)
AND A.COD_LOC = C.COD_LOC(+)
AND A.COD_CAB_PEDIDO = C.CEN_PEDIDO(+)
GROUP BY A.COD_PROVR_GEN,
A.COD_PROVR_TRABAJO,
A.COD_LOC_PROVR,
A.COD_CAB_PEDIDO,
A.COD_LOC,
A.COD_CAB_PEDIDO,
A.FEC_ENTREGA_DESDE,
A.COD_AGRUPACION,
A.COD_TP_INCOTERM
) A,
[email protected] c,
[email protected] D,
--antonio--
(SELECT A.ALMACEN,A.COD_PEDIDO,A.FECHA_PEDIDO,A.FECHA_REAL,
A.COD_LOC , A.COD_PROVEEDOR, MAX(HORA_REAL) AS HORA_REAL
FROM [email protected] A ,
(SELECT ALMACEN,COD_PEDIDO,FECHA_PEDIDO,MAX(FECHA_REAL) AS FECHA_REAL, COD_LOC ,
COD_PROVEEDOR FROM [email protected] group by ALMACEN, COD_PEDIDO, FECHA_PEDIDO, COD_LOC, COD_PROVEEDOR ) B
WHERE A.COD_LOC = 2054
AND A.ALMACEN = B.ALMACEN
AND A.COD_PEDIDO = B.COD_PEDIDO
AND A.FECHA_PEDIDO = B.FECHA_PEDIDO
AND A.FECHA_REAL = B.FECHA_REAL
AND A.COD_LOC = B.COD_LOC
AND A.COD_PROVEEDOR = B.COD_PROVEEDOR
group by A.ALMACEN, A.COD_PEDIDO, A.FECHA_PEDIDO, A.COD_LOC, A.FECHA_REAL,
A.COD_PROVEEDOR) CK,
--antonio--
(SELECT COD_LOC,
ETAREC,
MAX(DTMREC) DTMREC,
MAX(HEMREC) HEMREC,
REFREC_CALC
FROM
(SELECT
/*+ PARALLEL(A,6,1) */
A.COD_LOC,
A.ETAREC,
A.DTMREC DTMREC,
A.HEMREC HEMREC,
SUBSTR(A.REFREC,REGEXP_INSTR(A.REFREC, '[0-9]'), LENGTH(A.REFREC)-2) REFREC_CALC
FROM [email protected] A
)
GROUP BY COD_LOC,
ETAREC,
REFREC_CALC
) E,
REGISTROS_PARRILLA_N_SIA F,
PCO_MARCA_GT@pgredapr H,
PCO_MARCA_GT@pgredapr I
WHERE A.COD_LOC = C.PLATAFORMA
AND A.NUM_PEDIDO = C.COD_PEDIDO
AND A.COD_ART = D.COD_ART(+)
AND A.COD_LOC = E.COD_LOC(+)
AND A.COD_LOC = CK.COD_LOC(+)
AND A.NUM_PEDIDO = CK.COD_PEDIDO(+)
AND CK.COD_PROVEEDOR(+) = A.COD_PROVR_GEN || LPAD(A.COD_PROVR_TRABAJO,4+LENGTH(A.COD_PROVR_TRABAJO)-LENGTH(A.COD_PROVR_TRABAJO),'0')
AND A.NUM_PEDIDO = E.REFREC_CALC (+)
AND '50' = E.ETAREC(+)
AND A.COD_LOC = F.COD_LOC(+)
AND A.NUM_PEDIDO = F.COD_CAB_PEDIDO(+)
AND ((F.COD_PROVR_GEN = H.COD_PROVR_GEN(+)
AND F.COD_PROVR_TRABAJO = H.COD_PROVR_TRABAJO(+)
AND F.COD_LOC = H.COD_LOC(+))
AND (F.COD_LOC_PROVR = I.COD_LOC_PROVR(+)
AND 361 = I.COD_LOC_PROVR(+)
AND F.COD_LOC = I.COD_LOC(+) )
);
Resulta que la select de la Merge, que es la que busca los datos en la BBDD si que me devuelve registros.
Y la verdad, es que por más que miro y miro...no entiendo que no me inserte los datos en la tabla que le indico en la Merge...
Gracias por alguien de aquí me puede ayudar.
Un saludo