WorkAkkaunt

gett taxi robit

Jul 3rd, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 8.02 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, result [Оценка Оператором]
  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, result [Оценка Оператором]
  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, result [Оценка Оператором]
  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, result [Оценка Оператором]
  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