我试图弄清楚如何插入#TableA(HIST_REMEDY)中不存在的#TableA(STAGE_REMEDY)中存储的记录。使用Date(在我的情况下为FECHA_ENVIO字段)进行相互比较,只是为了验证我是否将仅插入NEW数据并以正确的方式进行分组。
我正在使用SQL Developer,并且尝试开发不同的过程来实现我的目标。下面的代码显示了我实际上无法运行的尝试(不要在表中插入数据,我不知道为什么)。
create or replace procedure HISTORICO_PRUEBA
AS
BEGIN
INSERT INTO HIST_REMEDY (HORA_ENVIO, HORA_RESOLUCION,
TIEMPO_SLA_MINUTOS, GRUPO_ASIGNADO,INCIDENCIA,CUENTA,
RESUMEN,COMENTARIOS,ESTADO,
FECHA_ENVIO,FECHA_RESOLUCION,FECHA_ULTIMA_MODIFICACION,
USUARIO_ASIGNADO,REGION,CIUDAD,RESOLN1,RESOLN2,RESOLN3,
CN,NO_ACTIVIDAD,
OS,DEPARTAMENTO,ORGANIZACION,AREA,USUARIOR,NOMBRE,APELLIDO,GRUPO_ASIGNADO_MDA,AREA_ESCALA,
CATEGORIA_SLA,MAL_GENERADO,
USR_SIEBEL,NOMBRE_CLAVE,
AREA_PROVENIENTE,RECURRENTE,
ESCALADO,SEVERIDAD, SERVICIO)
SELECT HORA_ENVIO, HORA_RESOLUCION,
TIEMPO_SLA_MINUTOS, GRUPO_ASIGNADO,INCIDENCIA,CUENTA,
RESUMEN,COMENTARIOS,ESTADO,
FECHA_ENVIO,FECHA_RESOLUCION,FECHA_ULTIMA_MODIFICACION,
USUARIO_ASIGNADO,REGION,CIUDAD,RESOLN1,RESOLN2,RESOLN3,
CN,NO_ACTIVIDAD,
OS,DEPARTAMENTO,ORGANIZACION,AREA,USUARIOR,NOMBRE,APELLIDO,GRUPO_ASIGNADO_MDA,AREA_ESCALA,
CATEGORIA_SLA,MAL_GENERADO,
USR_SIEBEL,NOMBRE_CLAVE,
AREA_PROVENIENTE,RECURRENTE,
ESCALADO,SEVERIDAD, SERVICIO
FROM STAGE_REMEDY
WHERE NOT EXISTS (SELECT * FROM HIST_REMEDY WHERE SUBSTR (HIST_REMEDY.FECHA_ENVIO,0,10) = SUBSTR (STAGE_REMEDY.FECHA_ENVIO,0,10))
GROUP BY HORA_ENVIO, HORA_RESOLUCION,
TIEMPO_SLA_MINUTOS, GRUPO_ASIGNADO,INCIDENCIA,CUENTA,
RESUMEN,COMENTARIOS,ESTADO,
FECHA_ENVIO,FECHA_RESOLUCION,FECHA_ULTIMA_MODIFICACION,
USUARIO_ASIGNADO,REGION,CIUDAD,RESOLN1,RESOLN2,RESOLN3,
CN,NO_ACTIVIDAD,
OS,DEPARTAMENTO,ORGANIZACION,AREA,USUARIOR,NOMBRE,APELLIDO,GRUPO_ASIGNADO_MDA,AREA_ESCALA,
CATEGORIA_SLA,MAL_GENERADO,
USR_SIEBEL,NOMBRE_CLAVE,
AREA_PROVENIENTE,RECURRENTE,
ESCALADO,SEVERIDAD, SERVICIO;
COMMIT;
END;
我的意思是使用NOT EXISTS意味着如果表在STAGE_REMEDY中有30000条记录,其中trunc(FECHA_ENVIO)=日期'2019-05-07',在HIST_REMEDY中有一条记录,其中trunc(FECHA_ENVIO)=日期'2019-05 -07'不插入任何记录。