Advertisement
Guest User

Untitled

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