SQL Server 2008存储过程 - 每天运行一次

时间:2013-09-26 01:55:53

标签: sql sql-server-2008

我正在尝试在过去一年中每天运行此查询。有没有办法自动化流程并返回每天MaxAgentsLoggedIn的列表?

提前致谢

select top 1 
     dIntervalStart IntervalStart, count(cName) MaxAgentsLoggedIn
from IAgentQueueStats
where cReportGroup = '*'
   and cHKey3 = '*'
   and cHKey4 = '*'
   and tAgentLoggedIn > 0
   and dIntervalStart >= '2013-09-24 00:00:00'
   and dIntervalStart <= '2013-09-24 23:59:59'
group by 
   nDuration, dIntervalStart
order by 
   MaxAgentsLoggedIn desc;

定义

      [cName] [nvarchar](50) NOT NULL,
   [cReportGroup] [nvarchar](50) NOT NULL,
[cHKey3] [nvarchar](50) NULL,
[cHKey4] [nvarchar](50) NULL,
[cType] [char](1) NOT NULL,
[dIntervalStart] [datetime] NOT NULL,
[nDuration] [int] NOT NULL,
[nEnteredAcd] [int] NOT NULL,
[nAbandonedAcd] [int] NOT NULL,
[nGrabbedAcd] [int] NOT NULL,
[nLocalDisconnectAcd] [int] NOT NULL,
[nAlertedAcd] [int] NOT NULL,
[nAnsweredAcd] [int] NOT NULL,
[nAnswered] [int] NOT NULL,
[nAcdSvcLvl] [int] NOT NULL,
[nAnsweredAcdSvcLvl1] [int] NOT NULL,
[nAnsweredAcdSvcLvl2] [int] NOT NULL,
[nAnsweredAcdSvcLvl3] [int] NOT NULL,
[nAnsweredAcdSvcLvl4] [int] NOT NULL,
[nAnsweredAcdSvcLvl5] [int] NOT NULL,
[nAnsweredAcdSvcLvl6] [int] NOT NULL,
[nAbandonAcdSvcLvl1] [int] NOT NULL,
[nAbandonAcdSvcLvl2] [int] NOT NULL,
[nAbandonAcdSvcLvl3] [int] NOT NULL,
[nAbandonAcdSvcLvl4] [int] NOT NULL,
[nAbandonAcdSvcLvl5] [int] NOT NULL,
[nAbandonAcdSvcLvl6] [int] NOT NULL,
[tGrabbedAcd] [int] NOT NULL,
[tAnsweredAcd] [int] NOT NULL,
[mtAnsweredAcd] [int] NOT NULL,
[tAbandonedAcd] [int] NOT NULL,
[tTalkAcd] [int] NOT NULL,
[tTalkCompleteAcd] [int] NOT NULL,
[nHoldAcd] [int] NOT NULL,
[tHoldAcd] [int] NOT NULL,
[nAcw] [int] NOT NULL,
[tAcw] [int] NOT NULL,
[tAcwComplete] [int] NOT NULL,
[nExternToInternCalls] [int] NOT NULL,
[nExternToInternAcdCalls] [int] NOT NULL,
[nInternToExternCalls] [int] NOT NULL,
[nInternToExternAcdCalls] [int] NOT NULL,
[nInternToInternCalls] [int] NOT NULL,
[nInternToInternAcdCalls] [int] NOT NULL,
[tExternToInternCalls] [int] NOT NULL,
[tExternToInternAcdCalls] [int] NOT NULL,
[tInternToExternCalls] [int] NOT NULL,
[tInternToExternAcdCalls] [int] NOT NULL,
[tInternToInternCalls] [int] NOT NULL,
[tInternToInternAcdCalls] [int] NOT NULL,
[nAcwCalls] [int] NOT NULL,
[tAcwCalls] [int] NOT NULL,
 [nTransferedAcd] [int] NOT NULL,
[nNotAnsweredAcd] [int] NOT NULL,
[tAlertedAcd] [int] NOT NULL,
[nFlowOutAcd] [int] NOT NULL,
[tFlowOutAcd] [int] NOT NULL,
[nStartWaitAlertAcdCalls] [int] NOT NULL,
[nStartActiveAcdCalls] [int] NOT NULL,
[nStartHeldAcdCalls] [int] NOT NULL,
[nEndWaitAlertAcdCalls] [int] NOT NULL,
[nEndActiveAcdCalls] [int] NOT NULL,
[nEndHeldAcdCalls] [int] NOT NULL,
[nTransferWithinAcdCalls] [int] NOT NULL,
[nTransferOutAcdCalls] [int] NOT NULL,
[nDisconnectAcd] [int] NOT NULL,
[tAgentLoggedIn] [int] NOT NULL,
[tAgentAvailable] [int] NOT NULL,
[tAgentTalk] [int] NOT NULL,
[tAgentOtherBusy] [int] NOT NULL,
[tAgentOnAcdCall] [int] NOT NULL,
[tAgentOnOtherAcdCall] [int] NOT NULL,
[tAgentInAcw] [int] NOT NULL,
[tAgentOnNonAcdCall] [int] NOT NULL,
[tAgentDnd] [int] NOT NULL,
[tAgentNotAvailable] [int] NOT NULL,
[tAgentAcdLoggedIn] [int] NOT NULL,
[tAgentStatusDnd] [int] NOT NULL,
[tAgentStatusAcw] [int] NOT NULL,
[tAgentLoggedInDiluted] [int] NOT NULL,
[tStatusGroupFollowup] [int] NOT NULL,
[tStatusGroupBreak] [int] NOT NULL,
[tStatusGroupTraining] [int] NOT NULL,
[CustomValue1] [int] NOT NULL,
[CustomValue2] [int] NOT NULL,
[CustomValue3] [int] NOT NULL,
[CustomValue4] [int] NOT NULL,
[CustomValue5] [int] NOT NULL,
[CustomValue6] [int] NOT NULL,
[I3TimeStampGMT] [datetime] NOT NULL,
[SiteId] [smallint] NOT NULL,
[SubSiteId] [smallint] NOT NULL,
[nLocalDisconnectAgentAlertAcd] [int] NULL,
[nLocalDisconnectAgentAcd] [int] NULL,
[tAgentAcdLoggedIn2] [int] NULL

1 个答案:

答案 0 :(得分:0)

您可以在查询中包含日期,然后按天分组,而不是按天迭代查询吗?

Question 113045的答案显示了如何使用

从日期时间中提取日期
convert(date, dIntervalStart)

如果将此日期添加到查询中,则可以从结果中查询max(AgentsLoggedIn)并按日获取列表。

select theDay, max(AgentsLoggedIn) MaxAgentsLoggedIn
from (
    select convert(date, dIntervalStart) as theDay
         dIntervalStart IntervalStart, count(cName) AgentsLoggedIn
    from IAgentQueueStats
    where cReportGroup = '*'
       and cHKey3 = '*'
       and cHKey4 = '*'
       and tAgentLoggedIn > 0
       and dIntervalStart >= '2013-09-24 00:00:00'
       and dIntervalStart <= '2013-09-24 23:59:59'
    group by 
       nDuration, dIntervalStart ) as q
group by theDay;