2013-09-26 3 views
0

J'essaie d'exécuter cette requête tous les jours au cours de l'année écoulée. Y at-il un moyen d'automatiser le processus et de récupérer une liste de MaxAgentsLoggedIn pour chaque jour?Procédure stockée SQL Server 2008 - exécution une fois par jour

Merci à l'avance

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; 

Définition

 [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 
+0

Cette section explique comment planifier la procédure stockée. http://stackoverflow.com/questions/287060/scheduled-run-of-stored-procedure-on-sql-server – user2601995

+0

Quel type de DB? Dans une base de données Oracle, utilisez un dbms_job lié à une procédure stockée, dans mySQL, regardez dans ce doc: http://dev.mysql.com/doc/refman/5.1/en/events-overview.html –

Répondre

0

Plutôt que itérer la requête par jour, vous pouvez inclure le jour dans la requête, puis groupe par jour?

Question 113045 a une réponse qui montre comment tirer juste la date à partir de l'heure de date à l'aide

convert(date, dIntervalStart) 

Si vous ajoutez cette date à votre requête, vous pouvez interroger le maximum (AgentsLoggedIn) du résultat et obtenir une liste par jour.

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; 
+0

Salut le tAgentloggedin est la durée pendant laquelle l'agent est resté connecté et non l'horodatage. La queury fonctionne correctement pour un jour. J'essaie juste de courir pendant plusieurs jours. – user2817598

+0

Pouvez-vous modifier la question pour ajouter la définition de la table - au moins la définition des colonnes pertinentes? Cela pourrait rendre plus facile d'aider. – GregA100k

+0

Salut G_A. J'ai ajouté la définition de la table – user2817598

Questions connexes