BD.PROC.ACD PROC INF RELLAMADAS

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda

1 Descripción

2 Parámetros

USE `nimitz`;

DROP procedure IF EXISTS `nimitz`.`ACD_PROC_INF_RELLAMADAS`;

DELIMITER $$

USE `nimitz`$$

CREATE DEFINER=`adminNimitz`@`%` PROCEDURE `ACD_PROC_INF_RELLAMADAS`(IN FILTRO VARCHAR(1000))

BEGIN

DECLARE V_HORA_INICIO DATETIME;

DECLARE V_ORIGEN VARCHAR(45);

DECLARE V_DESTINO VARCHAR(45);

SET @num = 0;

SET @consulta = CONCAT('SELECT MIN(DAT_LLAMADAS.D_HORA_INICIO) INTO @V_HORA_INICIO FROM DAT_LLAMADAS

LEFT JOIN DAT_SEGMENTOS ON DAT_LLAMADAS.ID = ID_LLAMADA

LEFT JOIN COM_USUARIOS ON COM_USUARIOS.ID = DAT_SEGMENTOS.ID_USUARIO

LEFT JOIN ACD_COLAS ON ACD_COLAS.ID = DAT_SEGMENTOS.ID_COLA

LEFT JOIN ACD_VDN ON ACD_VDN.ID = DAT_SEGMENTOS.ID_VDN

WHERE ', FILTRO);

PREPARE stmt from @consulta;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

SET @consulta = CONCAT('SELECT X.C_ORIGEN,X.C_DESTINO,X.ROW_NUMBER VECES, X.HORA_INICIO

FROM(SELECT DAT_LLAMADAS.C_ORIGEN,DAT_LLAMADAS.C_DESTINO,DAT_LLAMADAS.D_HORA_INICIO,

@num := if(@V_ORIGEN = DAT_LLAMADAS.C_ORIGEN && @V_DESTINO = DAT_LLAMADAS.C_DESTINO && DATE_ADD(@V_HORA_INICIO, interval 5 MINUTE)>= DAT_LLAMADAS.D_HORA_INICIO, @num

+ 1, 1) as ROW_NUMBER,

@V_HORA_INICIO := DAT_LLAMADAS.D_HORA_INICIO as HORA_INICIO,

@V_ORIGEN := DAT_LLAMADAS.C_ORIGEN,

@V_DESTINO := DAT_LLAMADAS.C_DESTINO

FROM DAT_LLAMADAS

LEFT JOIN DAT_SEGMENTOS ON DAT_LLAMADAS.ID = ID_LLAMADA AND E_TIPO_SEGMENTO= 30

LEFT JOIN COM_USUARIOS ON COM_USUARIOS.ID = DAT_SEGMENTOS.ID_USUARIO

LEFT JOIN ACD_COLAS ON ACD_COLAS.ID = DAT_SEGMENTOS.ID_COLA

LEFT JOIN ACD_VDN ON ACD_VDN.ID = DAT_SEGMENTOS.ID_VDN

WHERE DAT_LLAMADAS.E_TIPO_LLAMADA = 20 AND ', FILTRO,

' ORDER BY DAT_LLAMADAS.C_ORIGEN,DAT_LLAMADAS.C_DESTINO, DAT_LLAMADAS.D_HORA_INICIO) AS X');

PREPARE stmt from @consulta;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

END$$


DELIMITER ;