Advertisement
Guest User

ОДФ 3

a guest
Jul 16th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.78 KB | None | 0 0
  1. /*DECLARE @DateStart datetime;
  2. DECLARE @DateEnd   datetime;
  3. DECLARE @TimeStart datetime;
  4. DECLARE @TimeEnd   datetime;
  5.  
  6. SET @DateStart = '20190709 00:00:00.000'
  7. SET @DateEnd = '20190709 23:59:00.000'
  8. SET @TimeStart = '19000101 00:00:00.000'
  9. SET @TimeEnd = '19000101 23:59:00.000'
  10.  
  11. DECLARE @tasks TABLE (id uniqueidentifier)
  12. DECLARE @opers TABLE ( id uniqueidentifier)
  13.  
  14. INSERT INTO @opers
  15. SELECT DISTINCT id FROM oktell.dbo.A_Users
  16.  
  17. INSERT INTO @tasks
  18. SELECT id FROM oktell.dbo.A_TaskManager_Tasks WHERE name ='B2D not in ride'
  19.  
  20. DECLARE @AbonentNumber nvarchar(250);
  21. SET @AbonentNumber = ''
  22. DECLARE @type int = 0*/
  23.  
  24. --------------------------------------------------------------------------------------------------------------------------
  25.    
  26. SELECT od.IdChain,datewrite, callerID,od.idtask,Operator,Casy_type,Sub_type,Sub_3,[RESULT]
  27. INTO #dialogtabletemp
  28. FROM oktell..Olp_dialog od
  29. LEFT JOIN oktell.dbo.A_Users au
  30.   ON au.name=od.Operator --Старый джойн, возможно пригодится, заменен на eff
  31. LEFT JOIN oktell_cc_temp.dbo.A_Cube_CC_EffortConnections eff WITH (nolock)
  32.     ON eff.IdChain=od.IdChain
  33. WHERE od.DateWrite BETWEEN @DateStart AND @DateEnd
  34.     AND CAST(CAST(od.DateWrite AS TIME)AS datetime) BETWEEN @TimeStart AND @TimeEnd
  35.     AND od.idtask IN (SELECT id FROM @tasks)
  36.     AND au.ID IN (SELECT id FROM @opers)
  37.     AND eff.IdOperator IN (SELECT id FROM @opers)
  38.     AND CallResult NOT IN (6, 7, 13) -- строка добавлена по AI-11600 14.11.2018, раньше было без нее
  39.  
  40. SELECT DISTINCT D1.IdChain
  41.     , D2.DateWrite
  42.     , D1.CallerID
  43.     , D2.idtask
  44.     , D1.Operator
  45.     , D1.Casy_type
  46.     , D1.Sub_type
  47.     , D1.Sub_3
  48.     , D1.RESULT
  49. INTO #olp_dialog_report
  50. FROM #dialogtabletemp D1
  51. LEFT JOIN #dialogtabletemp AS D2
  52.     ON D1.IdChain = D2.IdChain
  53.  
  54. DROP TABLE #dialogtabletemp
  55.  
  56. DECLARE @final TABLE
  57.     (
  58.         idchain uniqueidentifier,datewrite datetime ,callerid nvarchar(50)
  59.         ,idtask uniqueidentifier,operator nvarchar(100),casy_type nvarchar(MAX)
  60.         ,sub_type nvarchar(MAX),sub_3 nvarchar(MAX),mark INT,post INT, RESULT INT
  61.     )
  62. INSERT INTO @final
  63. SELECT DISTINCT od1.idchain
  64.     , OD2.DateWrite
  65.     , OD2.CallerID
  66.     , OD2.idtask
  67.     , OD2.Operator
  68.     , OD2.Casy_type
  69.     , OD2.Sub_type
  70.     , OD2.Sub_3
  71.     , TM.MARK
  72.     , NULL
  73.     , OD2.RESULT
  74. FROM #olp_dialog_report AS OD1
  75. LEFT JOIN oktell.dbo.A_Users au
  76.     ON au.name=OD1.Operator
  77. LEFT JOIN #olp_dialog_report AS OD2
  78.     ON OD1.IdChain = OD2.IdChain
  79. LEFT JOIN oktell.dbo.tbl_MARK AS TM
  80.     ON TM.IDHCAIN = OD1.IdChain
  81. LEFT JOIN oktell_cc_temp.dbo.A_Cube_CC_EffortConnections eff WITH (nolock)
  82.     ON eff.IdChain=OD1.IdChain
  83. WHERE OD1.DateWrite BETWEEN @DateStart AND @DateEnd
  84.     AND CAST(CAST(OD1.DateWrite AS TIME)AS datetime) BETWEEN @TimeStart AND @TimeEnd
  85.     AND OD1.idtask IN (SELECT id FROM @tasks)
  86.     AND eff.IdOperator IN (SELECT id FROM @opers)
  87.     AND au.ID IN (SELECT id FROM @opers)
  88.  
  89. DROP TABLE #olp_dialog_report
  90.  
  91. UPDATE @final
  92. SET post = (
  93. CASE
  94.     WHEN
  95.     (
  96.         SELECT SUM(lentime)
  97.         FROM oktell_cc_temp.[dbo].[A_Cube_CC_OperatorStates]
  98.         WHERE state=7 AND idoperator=au.ID
  99.             AND ideffort IN
  100.                 (
  101.                     SELECT DISTINCT ideffort FROM oktell_cc_temp.dbo.A_Cube_CC_EffortConnections WHERE idchain=t.idchain
  102.                 )
  103.     )>41
  104.     THEN
  105.         (
  106.             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)))
  107.         )
  108.     ELSE
  109.         (
  110.             SELECT SUM(lentime)
  111.             FROM oktell_cc_temp.[dbo].[A_Cube_CC_OperatorStates]
  112.             WHERE state=7 AND idoperator=au.ID
  113.                 AND ideffort IN
  114.                     (
  115.                         SELECT DISTINCT ideffort FROM oktell_cc_temp.dbo.A_Cube_CC_EffortConnections WHERE idchain=t.idchain
  116.                     )
  117.         )
  118.     END
  119. )
  120. FROM @final t
  121. LEFT JOIN oktell.dbo.a_users au
  122.     ON au.Name = t.operator
  123.  
  124. SELECT datewrite [Дата, Время]
  125.     , callerid[Номер абонента]
  126.     , tsk.Name[Задача]
  127.     , operator[Оператор]
  128.     , casy_type
  129.     , sub_type
  130.     , sub_3
  131.     , mark[Оценка]
  132.     , CAST(DATEADD(ss,post,'00:00') AS TIME(0)) post
  133.     , IIF(RESULT != -1, RESULT, NULL) [Оценка Оператором]
  134.     ,'http://gett.oktell.olp.site:4055/download/byscript?name=Test_voice&startparam1='+CAST(idchain AS nvarchar(50))+'&async=0&timeout=10' [Ссылка на запись]
  135. INTO #result_temp
  136. FROM @final AS od
  137. LEFT JOIN [oktell].dbo.[A_TaskManager_Tasks] AS tsk
  138.     ON tsk.Id = od.idtask
  139.  
  140. DELETE @final
  141.  
  142.  
  143. IF(@TYPE=1 AND (@AbonentNumber='' OR @AbonentNumber IS NULL))
  144. BEGIN
  145.     SELECT * FROM #result_temp
  146.     ORDER BY [Оператор]
  147. END
  148. IF((@TYPE=0 OR @TYPE IS NULL) AND ( @AbonentNumber='' OR @AbonentNumber IS NULL))
  149. BEGIN  
  150.     SELECT * FROM #result_temp
  151.     WHERE casy_type IS NULL OR casy_type=''
  152.     ORDER BY [Дата, Время]
  153. END
  154. IF((@TYPE=0 OR @TYPE IS NULL) AND ( @AbonentNumber<>'' OR @AbonentNumber IS NOT NULL))
  155. BEGIN
  156.     SELECT * FROM #result_temp
  157.     WHERE (casy_type IS NULL OR casy_type='' ) AND [Номер абонента] LIKE '%'+@AbonentNumber+'%'
  158.     ORDER BY [Дата, Время]
  159. END
  160. IF(@TYPE=1 AND ( @AbonentNumber<>'' OR @AbonentNumber IS NOT NULL))
  161. BEGIN
  162.     SELECT * FROM #result_temp
  163.     WHERE [Номер абонента] LIKE '%'+@AbonentNumber+'%'
  164. END
  165.  
  166. DROP TABLE #result_temp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement