Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 9.88 KB | None | 0 0
  1. DECLARE @CUSTOMERID INT = 1
  2.     DECLARE @RANDOM VARCHAR(12) = CAST(CAST(RAND() * 1000000000 AS INT) AS VARCHAR)
  3.     DECLARE @FECHADESDE DATE = '20200128'
  4.     DECLARE @FECHAHASTA DATE = '20200129'
  5.     DECLARE @AGENTE VARCHAR(500) = ';-1;'
  6.     DECLARE @COLA VARCHAR(500) =';560;'
  7.     DECLARE @ABANDON VARCHAR(500) = ';1;0;'
  8.     DECLARE @ANI VARCHAR(60) =''
  9.     DECLARE @QUERY NVARCHAR(MAX)
  10.     DECLARE @QUERY_LIST TABLE
  11.  
  12.                         (
  13.                           ReportType VARCHAR(50),
  14.                           TableName  VARCHAR(200)
  15.                         )
  16.  
  17. INSERT INTO @QUERY_LIST (ReportType, TableName)
  18.     SELECT ReportType, REPLACE(REPLACE(ViewName, '[STAT_SERVER_LAM079\SQLEXPERTA_SQLEXPERTA_VONDATHP].[VONDATHP].DBO.VWINBOUNDCALLS', '[VONDATHP]..ODCalls'), 'VWINBOUNDCALLS', 'ODCalls')
  19.     FROM vreportp.dbo.QueryList
  20.     WHERE CustomerID = @CUSTOMERID
  21.       AND MinTime <= CONVERT(CHAR(8), @FECHAHASTA, 112) + '000000'
  22.       AND MaxTime >= CONVERT(CHAR(8), @FECHADESDE, 112) + '000000'
  23.       AND ReportType = 'INBOUND'
  24.  
  25.      SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  26.     EXEC sp_executesql @QUERY
  27.  
  28. SET @QUERY = 'CREATE TABLE ##Encuesta_{RANDOM} (CALL_ID char(32),
  29. RTA_2 INT,
  30. RTA_3 INT,
  31. RTA_4 INT,
  32. RTA_5 INT,
  33. RTA_6 INT,
  34. )
  35. INSERT INTO ##Encuesta_{RANDOM}
  36. SELECT CALL_ID,RTA_2,RTA_3,RTA_4,RTA_5,RTA_6   FROM [vcampap]..[Encuestas_Entrantes] AS ENC'
  37.  
  38. SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  39. EXEC sp_executesql @QUERY
  40.  
  41.  
  42.     SET @QUERY = 'CREATE TABLE ##ODCalls_{RANDOM} (
  43.       ID                      CHAR(32),
  44.       CustomerID              INT,
  45.       Indice                  NUMERIC(18),
  46.       CallType                INT,
  47.       CallUniversalTime       DATETIME,
  48.       CallLocalTime           DATETIME,
  49.       CallUniversalTimeString VARCHAR(14),
  50.       CallLocalTimeString     VARCHAR(14),
  51.       Duration                INT DEFAULT 0,
  52.       CallDuration            INT DEFAULT 0,
  53.       AcceptDuration          INT DEFAULT 0,
  54.       IvrDuration             INT DEFAULT 0,
  55.       WaitDuration            INT DEFAULT 0,
  56.       TotalWaitDuration       INT DEFAULT 0,
  57.       ConvDuration            INT DEFAULT 0,
  58.       WrapupDuration          INT DEFAULT 0,
  59.       RerouteDuration         INT DEFAULT 0,
  60.       OverflowDuration        INT DEFAULT 0,
  61.       ANI                     VARCHAR(60),
  62.       DNIS                    VARCHAR(60),
  63.       FirstCampaign           VARCHAR(255),
  64.       FirstVirtualCamp        VARCHAR(255),
  65.       LastCampaign            VARCHAR(255),
  66.       LastVirtualCamp         VARCHAR(255),
  67.       UUI                     VARCHAR(255),
  68.       Memo                    NVARCHAR(255),
  69.       AssociatedData          NVARCHAR(255),
  70.       OutTel                  VARCHAR(60),
  71.       OutDialed               VARCHAR(100),
  72.       Closed                  INT,
  73.       NoAgent                 INT,
  74.       Overflow                INT,
  75.       Abandon                 INT,
  76.       FirstIVR                VARCHAR(255),
  77.       LastIVR                 VARCHAR(255),
  78.       FirstQueue              INT,
  79.       LastQueue               INT,
  80.       InitPriority            INT,
  81.       FirstAgent              INT,
  82.       LastAgent               INT,
  83.       LastTransfer            VARCHAR(60),
  84.       CallStatusGroup         INT,
  85.       CallStatusNum           INT,
  86.       CallStatusDetail        INT,
  87.       Comments                NVARCHAR(255),
  88.       ContactID               VARCHAR(50),
  89.       EndByAgent              INT,
  90.       AgentListen             INT,
  91.       EndReason               INT,
  92.       RefID                   VARCHAR(32),
  93.       ProActiveReason         NVARCHAR(100)
  94.  
  95.     )'
  96.     SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  97.     EXEC sp_executesql @QUERY
  98.     DECLARE @TABLENAME VARCHAR(200)
  99.     DECLARE @REPORTTYPE VARCHAR(50)
  100.     DECLARE CURSOR_TABLAS CURSOR
  101.       FOR
  102.       SELECT *
  103.       FROM @QUERY_LIST
  104.  
  105.       OPEN CURSOR_TABLAS
  106.  
  107.     FETCH NEXT FROM CURSOR_TABLAS
  108.       INTO @REPORTTYPE, @TABLENAME
  109.       WHILE @@FETCH_STATUS = 0
  110.       BEGIN
  111.       IF @REPORTTYPE = 'INBOUND' -- INSERTAMOS EN LA TABLA TEMPORAL DE ODCALLS
  112.         BEGIN
  113.           SET @QUERY = 'INSERT INTO ##ODCalls_{RANDOM} (ID,' +
  114.                        'Indice,' +
  115.                        'CallType,' +
  116.                        'CallLocalTime,' +
  117.                        'Duration,' +
  118.                        'CallDuration,' +
  119.                        'AcceptDuration,' +
  120.                        'IvrDuration,' +
  121.                        'WaitDuration,' +
  122.                        'TotalWaitDuration,' +
  123.                        'ConvDuration,' +
  124.                        'WrapupDuration,' +
  125.                        'ANI,' +
  126.                        'DNIS,' +
  127.                        'FirstCampaign,' +
  128.                        'FirstVirtualCamp,' +
  129.                        'LastCampaign,' +
  130.                        'LastVirtualCamp,' +
  131.                        'UUI,' +
  132.                        'Memo,' +
  133.                        'AssociatedData,' +
  134.                        'OutTel,' +
  135.                        'OutDialed,' +
  136.                        'Closed,' +
  137.                        'NoAgent,' +
  138.                        'Overflow,' +
  139.                        'Abandon,' +
  140.                        'FirstIVR,' +
  141.                        'LastIVR,' +
  142.                        'FirstQueue,' +
  143.                        'LastQueue,' +
  144.                        'InitPriority,' +
  145.                        'FirstAgent,' +
  146.                        'LastAgent,' +
  147.                        'LastTransfer,' +
  148.                        'CallStatusGroup,' +
  149.                        'CallStatusNum,' +
  150.                        'CallStatusDetail,' +
  151.                        'Comments,' +
  152.                        'ContactID,' +
  153.                        'EndByAgent,' +
  154.                        'AgentListen,' +
  155.                        'EndReason,' +
  156.                        'RefID,' +
  157.                        'ProActiveReason) ' +
  158.                        --carga de datos en tabla temporal--
  159.                        'SELECT ID,' +
  160.                        'Indice,' +
  161.                        'CallType,' +
  162.                        'CallLocalTime,' +
  163.                        'Duration,' +
  164.                        'CallDuration,' +
  165.                        'AcceptDuration,' +
  166.                        'IvrDuration,' +
  167.                        'WaitDuration,' +
  168.                        'TotalWaitDuration,' +
  169.                        'ConvDuration,' +
  170.                        'WrapupDuration,' +
  171.                        'ANI,' +
  172.                        'DNIS,' +
  173.                        'FirstCampaign,' +
  174.                        'FirstVirtualCamp,' +
  175.                        'LastCampaign,' +
  176.                        'LastVirtualCamp,' +
  177.                        'UUI,' +
  178.                        'Memo,' +
  179.                        'AssociatedData,' +
  180.                        'OutTel,' +
  181.                        'OutDialed,' +
  182.                        'Closed,' +
  183.                        'NoAgent,' +
  184.                        'Overflow,' +
  185.                        'Abandon,' +
  186.                        'FirstIVR,' +
  187.                        'LastIVR,' +
  188.                        'FirstQueue,' +
  189.                        'LastQueue,' +
  190.                        'InitPriority,' +
  191.                        'FirstAgent,' +
  192.                        'LastAgent,' +
  193.                        'LastTransfer,' +
  194.                        'CallStatusGroup,' +
  195.                        'CallStatusNum,' +
  196.                        'CallStatusDetail,' +
  197.                        'Comments,' +
  198.                        'ContactID,' +
  199.                        'EndByAgent,' +
  200.                        'AgentListen,' +
  201.                        'EndReason,' +
  202.                        'RefID,' +
  203.                        'ProActiveReason ' +
  204.                        'FROM {TABLENAME} ' +
  205.                        'WHERE CustomerID = @CUSTOMERID ' +
  206.                            'AND CallType != 5 '+
  207.                        'AND ANI LIKE ''%'' + @ANI + ''%'' ' +
  208.                            'AND (@ABANDON LIKE CONCAT(''%;%'' , abandon , '';%'') ) ' +
  209.                        ' AND (@AGENTE = '';-1;'' OR @AGENTE LIKE CONCAT(''%;%'' , LastAgent , '';%'') )' +
  210.                        ' AND (@COLA = '';-1;'' OR @COLA LIKE CONCAT(''%;%'' , LastQueue , '';%'') )' +
  211.                        'AND CallLocalTime <= @FECHAHASTA ' +
  212.                        'AND CallLocalTime >= @FECHADESDE '
  213.  
  214.   SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  215.       SET @QUERY = REPLACE(@QUERY, '{TABLENAME}', @TABLENAME)
  216.       EXEC sp_executesql @QUERY,
  217.            N'@CUSTOMERID INT, @FECHADESDE DATETIME, @FECHAHASTA DATETIME, @AGENTE VARCHAR(500),@COLA VARCHAR(500),@ABANDON VARCHAR(500),@ANI VARCHAR(60)',
  218.            @CUSTOMERID = @CUSTOMERID, @FECHADESDE = @FECHADESDE, @FECHAHASTA = @FECHAHASTA, @AGENTE = @AGENTE, @COLA = @COLA , @ABANDON = @ABANDON,@ANI = @ANI
  219.     END
  220.       FETCH NEXT FROM CURSOR_TABLAS
  221.     INTO @REPORTTYPE, @TABLENAME
  222. END
  223.  
  224. CLOSE CURSOR_TABLAS
  225. DEALLOCATE CURSOR_TABLAS
  226. SET @QUERY = 'SELECT Indice
  227. ,tipo.Description as [Tipo de Llamada]
  228. ,CONVERT( VARCHAR , Calls.[CallLocalTime] , 103) as [Fecha]
  229. ,CONVERT( VARCHAR , Calls.[CallLocalTime] , 108 ) AS [Hora]
  230. ,CONVERT(char(8), DATEADD(second, calls.CallDuration, ''00:00''), 108) AS [Duracion Llamada]
  231. ,CONVERT(char(8), DATEADD(second, calls.[ConvDuration], ''00:00''), 108) AS [Duracion Conversacion]
  232. ,CONVERT(char(8), DATEADD(second, calls.[TotalWaitDuration], ''00:00''), 108) AS [Duracion Espera]
  233. ,CONVERT(char(8), DATEADD(second, calls.[IvrDuration], ''00:00''), 108) AS [Duracion IVR ]
  234. ,CONVERT(char(8), DATEADD(second, calls.[WrapupDuration], ''00:00''), 108) AS [Duracion Wrapup ]
  235. ,calls.ANI AS [Telefono Entrante]
  236. ,CASE
  237.     WHEN (SUBSTRING(calls.[UUI],1,1)) = ''C'' THEN ''Contrato''
  238.     WHEN (SUBSTRING(calls.[UUI],1,1)) = ''S'' THEN ''Siniestro''
  239.     WHEN (SUBSTRING(calls.[UUI],1,1)) = ''V'' THEN ''Venta''
  240.     WHEN (SUBSTRING(calls.[UUI],1,1)) = ''T'' THEN ''CUIT''
  241.     WHEN (SUBSTRING(calls.[UUI],1,1)) = ''D'' THEN ''DNI''
  242.     WHEN (SUBSTRING(calls.[UUI],1,1)) = ''A'' THEN ''Seguros''END AS ''Tipo Contacto''
  243. ,SUBSTRING(calls.[UUI],3,10 ) AS [Dato IVR]
  244. ,Cola.[Description] AS [ Cola Entrante]
  245. ,calls.Abandon AS [Abandonada]
  246. , CASE
  247.     WHEN calls.Abandon = 0 THEN ''NO''
  248.     WHEN calls.Abandon = 1 THEN ''SI'' END AS Abandonada2
  249. ,Calls.LastQueue AS [Cola Final]
  250. ,calls.FirstQueue AS [Cola Inicial]
  251. ,Calls.[OutTel] AS [Telefono Saliente]
  252. ,Calls.LastTransfer as [Transferencia]
  253. ,Calls.[FirstAgent] AS [Agente]
  254. ,agentes.[FirstName] +'' '' + agentes.[LastName] AS [Nombre Agente]
  255. ,estado.StatusText AS [Calificacion]
  256. ,ENC.RTA_2 AS [Respuesta 1]
  257. ,ENC.RTA_3 AS [Respuesta 2]
  258. ,ENC.RTA_4 AS [Respuesta 3]
  259. ,ENC.RTA_5 AS [Respuesta 4]
  260. ,ENC.RTA_6 AS [Respuesta NPS]
  261. FROM ##ODCalls_{RANDOM} AS calls
  262. LEFT JOIN ##Encuesta_{RANDOM} ENC ON calls.ID = ENC.CALL_ID
  263. LEFT JOIN [vondatp].[dbo].[CallTypes] Tipo ON calls.CallType = tipo.CallType
  264. LEFT JOIN [vadminp].[dbo].[ListQueues] Cola ON calls.FirstQueue = cola.[QueueID] AND COLA.CustomerID = @CUSTOMERID
  265. LEFT JOIN [vadminp].[dbo].[ListAgents] Agentes ON  Calls.[LastAgent] = agentes.[Ident] AND Agentes.CustomerID = @CUSTOMERID
  266. LEFT JOIN [vadminp].[dbo].[ListCallStatus] estado ON calls.CallStatusNum = estado.StatusCode AND calls.CallStatusGroup = estado.StatusGroup AND calls.[CallStatusDetail] = estado.[StatusDetail] AND estado.CustomerID = @CUSTOMERID
  267. ORDER BY  [CallLocalTime]
  268. '
  269.  
  270.      SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  271.     EXEC sp_executesql @QUERY,
  272. N'@CUSTOMERID INT',
  273. @CUSTOMERID = @CUSTOMERID
  274.  
  275. SET @QUERY = 'DROP TABLE ##ODCalls_{RANDOM}'
  276. SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  277. EXEC sp_executesql @QUERY
  278. SET @QUERY = 'DROP TABLE ##Encuesta_{RANDOM} '
  279. SET @QUERY = REPLACE(@QUERY, '{RANDOM}', @RANDOM)
  280. EXEC sp_executesql @QUERY
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement