Advertisement
Guest User

ОДФ 2

a guest
Jul 16th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.12 KB | None | 0 0
  1. /*declare @DateStart datetime;
  2. declare @DateEnd datetime;
  3. declare @TimeStart datetime;
  4. declare @TimeEnd datetime;
  5.  
  6. set @DateStart = '20180821 00:00:00.000'
  7. set @DateEnd = '20180821 23:59:00.000'
  8. set @TimeStart = '19000101 00:00:00.000'
  9. set @TimeEnd = '19000101 23:59:00.000'
  10. declare @tasks table (id uniqueidentifier)
  11. declare @opers table ( id uniqueidentifier)
  12. insert into @opers
  13. select distinct id from oktell.dbo.A_Users
  14. insert into @tasks
  15. select id from oktell.dbo.A_TaskManager_Tasks where name ='B2D Premium'
  16.  
  17. --- не очень хорошее решение в отношении выпадающего списка. Будет тормозить.
  18. declare @AbonentNumber nvarchar(250);
  19. set @AbonentNumber = ''
  20. declare @type int = 0*/
  21.    
  22.     SELECT od.IdChain,datewrite, callerID,od.idtask,Operator,Casy_type,Sub_type,Sub_3,RESULT
  23.     INTO #dialogtabletemp
  24.     FROM oktell..Olp_dialog od
  25.     --left join oktell.dbo.A_Users au on au.name=od.Operator Старый джойн, возможно пригодится, заменен на eff
  26.     LEFT JOIN oktell_cc_temp.dbo.A_Cube_CC_EffortConnections eff WITH (nolock) ON eff.IdChain=od.IdChain
  27.     WHERE od.DateWrite BETWEEN @DateStart AND @DateEnd
  28. AND
  29.     CAST(CAST(od.DateWrite AS TIME)AS datetime) BETWEEN @TimeStart AND @TimeEnd
  30.     AND od.idtask IN (SELECT id FROM @tasks)
  31.     --and au.ID in (select id from @opers)
  32.     AND eff.IdOperator IN (SELECT id FROM @opers)
  33.     AND CallResult !=6 -- строка добавлена по AI-11600 14.11.2018, раньше было без нее
  34.  
  35.     SELECT DISTINCT IdChain
  36.     ,(SELECT top 1 DateWrite FROM #dialogtabletemp dd2 WHERE dd2.IdChain=dd1.IdChain ORDER BY DateWrite) DateWrite
  37.     ,CallerID
  38.     ,(SELECT top 1 idtask FROM #dialogtabletemp dd2 WHERE dd2.IdChain=dd1.IdChain ORDER BY DateWrite DESC) idtask
  39.     ,Operator
  40.     ,Casy_type
  41.     ,Sub_type
  42.     ,Sub_3
  43.     ,RESULT
  44.     INTO #olp_dialog_report
  45.     FROM #dialogtabletemp dd1
  46.  
  47.     DROP TABLE #dialogtabletemp
  48.  
  49.     DECLARE @final TABLE (idchain uniqueidentifier,datewrite datetime ,callerid nvarchar(50),idtask uniqueidentifier,operator nvarchar(100),casy_type nvarchar(MAX),sub_type nvarchar(MAX),sub_3 nvarchar(MAX),mark INT,post INT, RESULT INT)
  50.     INSERT INTO @final
  51.     SELECT DISTINCT od.idchain
  52.     ,isnull((SELECT top 1  datewrite FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  datewrite FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  53.     ,isnull((SELECT top 1  CallerID FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  CallerID FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  54.     ,isnull((SELECT top 1  idtask FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  idtask FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  55.     ,isnull((SELECT top 1  Operator FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC ),(SELECT top 1  Operator FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC ))
  56.     ,isnull((SELECT top 1  Casy_type FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  Casy_type FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  57.     ,isnull((SELECT top 1  Sub_type FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  Sub_type FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  58.     ,isnull((SELECT top 1  Sub_3 FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  Sub_3 FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  59.     ,(SELECT  top 1 mark FROM oktell.dbo.tbl_MARK WHERE idhcain=od.IdChain)[Mark]
  60.     ,NULL
  61.     ,isnull((SELECT top 1  RESULT FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite ASC),(SELECT top 1  RESULT FROM #olp_dialog_report WHERE IdChain=od.IdChain ORDER BY datewrite DESC))
  62.    
  63. FROM #olp_dialog_report od
  64.     LEFT JOIN oktell.dbo.A_Users au ON au.name=od.Operator
  65.     --left join oktell_cc_temp.dbo.A_Cube_CC_EffortConnections eff with (nolock) on eff.IdChain=od.IdChain 
  66.     WHERE od.DateWrite BETWEEN @DateStart AND @DateEnd
  67. AND
  68.     CAST(CAST(od.DateWrite AS TIME)AS datetime) BETWEEN @TimeStart AND @TimeEnd
  69.     AND od.idtask IN (SELECT id FROM @tasks)
  70.     --and eff.IdOperator in (select id from @opers)
  71.     AND au.ID IN (SELECT id FROM @opers)
  72.  
  73. DROP TABLE #olp_dialog_report
  74.  
  75. UPDATE @final
  76. SET post = (
  77. CASE
  78.             WHEN
  79.             (
  80.             SELECT SUM(lentime) FROM oktell_cc_temp.[dbo].[A_Cube_CC_OperatorStates] WHERE state=7 AND idoperator=au.ID AND ideffort IN(SELECT DISTINCT ideffort FROM oktell_cc_temp.dbo.A_Cube_CC_EffortConnections WHERE idchain=t.idchain)
  81.             )>41
  82.         THEN
  83.             (SELECT datediff(SECOND,(SELECT top 1 datetimestop FROM oktell_cc_temp.dbo.A_Cube_CC_EffortConnections WITH (nolock) WHERE IdOperator = au.ID AND idchain=t.idchain ORDER BY datetimestop DESC),(SELECT MAX(DateTimeStop) FROM oktell_cc_temp.[dbo].[A_Cube_CC_OperatorStates] WHERE state=7 AND idoperator=au.ID AND ideffort IN(SELECT DISTINCT ideffort FROM oktell_cc_temp.dbo.A_Cube_CC_EffortConnections WHERE idchain=t.idchain))))
  84.         ELSE
  85.             (
  86.             SELECT SUM(lentime) FROM oktell_cc_temp.[dbo].[A_Cube_CC_OperatorStates] WHERE state=7 AND idoperator=au.ID AND ideffort IN(SELECT DISTINCT ideffort FROM oktell_cc_temp.dbo.A_Cube_CC_EffortConnections WHERE idchain=t.idchain)
  87.             )
  88.         END
  89. )
  90. FROM @final t
  91. LEFT JOIN oktell.dbo.a_users au ON au.Name = t.operator
  92.  
  93.  
  94.     IF(@TYPE=1 AND (@AbonentNumber='' OR @AbonentNumber IS NULL))
  95.     BEGIN
  96.     SELECT datewrite [Дата, Время],callerid[Номер абонента],tsk.Name[Задача],operator[Оператор],casy_type,sub_type,sub_3,mark[Оценка],CAST(dateadd(ss,post,'00:00')  AS TIME(0)) post, iif(RESULT != -1, RESULT, NULL) [Оценка Оператором]
  97. ,'http://gett.oktell.olp.site:4055/download/byscript?name=Test_voice&startparam1='+CAST(idchain AS nvarchar(50))+'&async=0&timeout=10' [Ссылка на запись]
  98.  FROM @final od
  99.     LEFT JOIN oktell.dbo.A_TaskManager_Tasks tsk ON tsk.id=od.idtask
  100.     ORDER BY Оператор
  101.     END
  102. IF((@TYPE=0 OR @TYPE IS NULL) AND ( @AbonentNumber='' OR @AbonentNumber IS NULL))
  103.     BEGIN
  104.     SELECT datewrite [Дата, Время],callerid[Номер абонента],tsk.Name[Задача],operator[Оператор],casy_type,sub_type,sub_3,mark[Оценка],CAST(dateadd(ss,post,'00:00') AS TIME(0)) post, iif(RESULT != -1, RESULT, NULL) [Оценка Оператором]
  105. ,'http://gett.oktell.olp.site:4055/download/byscript?name=Test_voice&startparam1='+CAST(idchain AS nvarchar(50))+'&async=0&timeout=10' [Ссылка на запись]
  106.  FROM @final  od
  107.     LEFT JOIN oktell.dbo.A_TaskManager_Tasks tsk ON tsk.id=od.idtask
  108.  
  109.      WHERE casy_type IS NULL OR casy_type=''
  110. ORDER BY datewrite
  111.     END
  112. IF((@TYPE=0 OR @TYPE IS NULL) AND ( @AbonentNumber<>'' OR @AbonentNumber IS NOT NULL))
  113. BEGIN
  114. SELECT datewrite [Дата, Время],callerid[Номер абонента],tsk.Name[Задача],operator[Оператор],casy_type,sub_type,sub_3,mark[Оценка],CAST(dateadd(ss,post,'00:00') AS TIME(0)) post, iif(RESULT != -1, RESULT, NULL) [Оценка Оператором]
  115. ,'http://gett.oktell.olp.site:4055/download/byscript?name=Test_voice&startparam1='+CAST(idchain AS nvarchar(50))+'&async=0&timeout=10' [Ссылка на запись]
  116.  FROM @final  od
  117.     LEFT JOIN oktell.dbo.A_TaskManager_Tasks tsk ON tsk.id=od.idtask
  118.  
  119.      WHERE (casy_type IS NULL OR casy_type='' ) AND callerid LIKE '%'+@AbonentNumber+'%'
  120. ORDER BY datewrite
  121. END
  122. IF(@TYPE=1 AND ( @AbonentNumber<>'' OR @AbonentNumber IS NOT NULL))
  123. BEGIN
  124.     SELECT datewrite [Дата, Время],callerid[Номер абонента],tsk.Name[Задача],operator[Оператор],casy_type,sub_type,sub_3,mark[Оценка],CAST(dateadd(ss,post,'00:00')  AS TIME(0)) post, iif(RESULT != -1, RESULT, NULL) [Оценка Оператором]
  125. ,'http://gett.oktell.olp.site:4055/download/byscript?name=Test_voice&startparam1='+CAST(idchain AS nvarchar(50))+'&async=0&timeout=10' [Ссылка на запись]
  126.  FROM @final od
  127.     LEFT JOIN oktell.dbo.A_TaskManager_Tasks tsk ON tsk.id=od.idtask
  128. WHERE callerid LIKE '%'+@AbonentNumber+'%'
  129. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement