alter proc UtilizationRateByHour(@searchdatechar varchar(24),@CityCode varchar(10)) as begin declare @begintime datetime declare @endtime datetime declare @orgId varchar(40) declare @logintime_hour00 int, @logintime_hour01 int, @logintime_hour02 int, @logintime_hour03 int, @logintime_hour04 int, @logintime_hour05 int, @logintime_hour06 int, @logintime_hour07 int, @logintime_hour08 int, @logintime_hour09 int, @logintime_hour10 int, @logintime_hour11 int, @logintime_hour12 int, @logintime_hour13 int, @logintime_hour14 int, @logintime_hour15 int, @logintime_hour16 int, @logintime_hour17 int, @logintime_hour18 int, @logintime_hour19 int, @logintime_hour20 int, @logintime_hour21 int, @logintime_hour22 int, @logintime_hour23 int declare @acwtime_hour00 int, @acwtime_hour01 int, @acwtime_hour02 int, @acwtime_hour03 int, @acwtime_hour04 int, @acwtime_hour05 int, @acwtime_hour06 int, @acwtime_hour07 int, @acwtime_hour08 int, @acwtime_hour09 int, @acwtime_hour10 int, @acwtime_hour11 int, @acwtime_hour12 int, @acwtime_hour13 int, @acwtime_hour14 int, @acwtime_hour15 int, @acwtime_hour16 int, @acwtime_hour17 int, @acwtime_hour18 int, @acwtime_hour19 int, @acwtime_hour20 int, @acwtime_hour21 int, @acwtime_hour22 int, @acwtime_hour23 int declare @acdtime_hour00 int, @acdtime_hour01 int, @acdtime_hour02 int, @acdtime_hour03 int, @acdtime_hour04 int, @acdtime_hour05 int, @acdtime_hour06 int, @acdtime_hour07 int, @acdtime_hour08 int, @acdtime_hour09 int, @acdtime_hour10 int, @acdtime_hour11 int, @acdtime_hour12 int, @acdtime_hour13 int, @acdtime_hour14 int, @acdtime_hour15 int, @acdtime_hour16 int, @acdtime_hour17 int, @acdtime_hour18 int, @acdtime_hour19 int, @acdtime_hour20 int, @acdtime_hour21 int, @acdtime_hour22 int, @acdtime_hour23 int declare @ihour int declare @i_acwtime1 int, @i_acwtime2 int, @i_acwtime3 int, @i_acwtime4 int, @i_acwtime int declare @i_stafftime1 int, @i_stafftime2 int, @i_stafftime3 int, @i_stafftime4 int, @i_stafftime int set @begintime=convert(datetime,@searchdatechar) set @endtime=DATEADD(day,1,@begintime) --set @begintime='2022-05-09' --set @endtime='2022-05-10' set @orgId='b05d5ac9-82b6-4abe-b343-36ddc94672d1' if (@CityCode='SZ') set @orgId='2b568031-39a1-4117-9927-39b7ade19e66' if (@CityCode='JN') set @orgId='f454f95c-9ab2-4499-936f-e746195c7487' if OBJECT_ID('tempdb..#t_AgentLoginLog') is not null drop table #t_AgentLoginLog if OBJECT_ID('tempdb..#t_iagent') is not null drop table #t_iagent if OBJECT_ID('tempdb..#t_stationcallrecord') is not null drop table #t_stationcallrecord if OBJECT_ID('tempdb..#SearchAgent') is not null drop table #SearchAgent select distinct Agent.Agent into #SearchAgent from Agent with(nolock) join Org_Agent with(nolock) on Agent.AgentID=Org_Agent.AgentID join Organization with(nolock) on Org_Agent.OrgID=Organization.OrgID and Org_Agent.OrgID in (@orgId) --某天每个小时的登录总时长 select * into #compute_agentloginlog from agentloginlog where 1=1 and ( logintime >= @begintime and logintime < @endtime and logouttime >= @begintime and logouttime < @endtime or (logintime <= @begintime and (logouttime >= @endtime or LogoutTime is null)) or (logintime <= @begintime and logouttime >= @begintime and logouttime < @endtime) or (logintime >= @begintime and logintime < @endtime and (logouttime > @endtime or LogoutTime is null)) ) and agentid in (select agent from #SearchAgent) set @ihour=1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour00=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour01=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour02=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour03=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour04=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour05=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour06=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour07=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour08=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour09=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour10=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour11=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour12=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour13=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour14=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour15=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour16=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour17=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour18=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour19=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour20=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour21=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour22=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 set @ihour=@ihour+1; --登入时间和登出时间都在@row_date_a和@row_date_b之间,此时计算logouttime-logintime=? select @i_stafftime1=isnull(sum(isnull(datediff(ss,logintime, logouttime),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a之前,登出时间在@row_date_b之后或者没有登出时间,此时计算@intrvl*60秒=? select @i_stafftime2=isnull(sum(@ihour*60),0) from #compute_agentloginlog where logintime <= @begintime and (logouttime >= dateadd(hour,@ihour,@begintime) or LogoutTime is null) --登入时间在@row_date_a之前,登出时间在@row_date_a和@row_date_b之间,此时计算logouttime-@row_date_a=? select @i_stafftime3=isnull(sum(isnull(datediff(ss,@begintime, logouttime),0)),0) from #compute_agentloginlog where logintime <= @begintime and logouttime >= @begintime and logouttime < dateadd(hour,@ihour,@begintime) --登入时间在@row_date_a和@row_date_b之间,登出时间在@row_date_b之后或者没有登出时间 select @i_stafftime4=isnull(sum(isnull(datediff(ss,logintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentloginlog where logintime >= @begintime and logintime < dateadd(hour,@ihour,@begintime) and (logouttime > dateadd(hour,@ihour,@begintime) or LogoutTime is null) set @logintime_hour23=@i_stafftime1+@i_stafftime2+@i_stafftime3+@i_stafftime4 --每小时总的话后总时长 select * into #compute_agentstatelog from agentstatelog where 1=1 and state=2 and ( (begintime >= @begintime and begintime < @endtime and endtime >= @begintime and endtime < @endtime ) or (begintime <= @begintime and (Endtime >= @endtime or Endtime is null)) or (begintime < @begintime and endtime >= @begintime and endtime < @endtime) or (begintime >= @begintime and begintime < @endtime and (Endtime > @endtime or Endtime is null)) ) and agentid in (select Agent from #SearchAgent) set @ihour=1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour00=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour01=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour02=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour03=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour04=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour05=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour06=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour07=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour08=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour09=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour10=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour11=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour12=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour13=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour14=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour15=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour16=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour17=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour18=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour19=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour20=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour21=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour22=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 set @ihour=@ihour+1; select @i_acwtime1=isnull(sum(isnull(datediff(ss,begintime, endtime),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime2=isnull(sum(@ihour*3600),0) from #compute_agentstatelog where begintime <= @begintime and (Endtime >= dateadd(hour,@ihour,@begintime) or Endtime is null) select @i_acwtime3=isnull(sum(isnull(datediff(ss,@begintime, endtime),0)),0) from #compute_agentstatelog where begintime < @begintime and endtime >= @begintime and endtime < dateadd(hour,@ihour,@begintime) select @i_acwtime4=isnull(sum(isnull(datediff(ss,begintime, dateadd(hour,@ihour,@begintime)),0)),0) from #compute_agentstatelog where begintime >= @begintime and begintime < dateadd(hour,@ihour,@begintime) and (Endtime > dateadd(hour,@ihour,@begintime) or Endtime is null) set @acwtime_hour23=@i_acwtime1+@i_acwtime2+@i_acwtime3+@i_acwtime4 --每小时总的通话总时长 select * into #t_stationcallrecord from stationcallrecord with(nolock) where 1=1 and (End_Time >=@begintime and End_Time <@endtime) --and split in ('841001','841002','841009','841012','841013','842030','841041','841301','841302','841303','841304','841305','841306','841307','841311','841312','841313','841314','841315','841316','841317','841341','841342','841343','841344','841345','841346','841347','841321','841322','841323','841324','841325','841326','841327','841331','841332','841333','841334','841335','841336','841337','841351','841352','841353','841354','841355','841356','841357') and calldirect=1 and split != '' and AgentID in ( select Agent from #SearchAgent ); set @ihour=1; select @acdtime_hour00= isnull(sum(talk_dur),0) from #t_stationcallrecord where 1=1 and (End_Time >=@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time =@begintime and End_Time