DECLARE @SA BIGINT, @EA BIGINT, @SB BIGINT, @EB BIGINT SET @SA = {?StartAccount} SET @EA = {?EndAccount} SET @SB = {?StartBilling} SET @EB = {?EndBilling} -- test values --SET @SA = '1' --SET @EA = '9999999999' --SET @SB = '0' --SET @EB = '9999999999' declare @StartInfTime int, @EndInfTime int SET @StartInfTime = DATEDIFF(n, '12/31/1899', {?StartDate}) SET @EndInfTime = DATEDIFF(n, '12/31/1899', {?EndDate}) --test values --SET @StartInfTime = DATEDIFF(n, '12/31/1899', '2011-11-29 00:00:00') --SET @EndInfTime = DATEDIFF(n, '12/31/1899', '2011-11-30 00:00:00') DECLARE @ClientMaintChange int, @NewPatch int, @ParadoxTalk int SET @ClientMaintChange = {?ClientMaintChange} SET @NewPatch = {?NewPatch} SET @ParadoxTalk = {?ParadoxTalk} --Test data --SET @ClientMaintChange = 1 --SET @NewPatch = 0 --SET @ParadoxTalk = 1 DECLARE @NoOpAhold int, @NoOpDisc int, @NoOpGone int, @NoOpHold int, @NoOpPatch int, @NoOpRing int, @NoOpWait int, @NoOpZero int SET @NoOpAhold = {?NoOpAhold} SET @NoOpDisc = {?NoOpDisc} SET @NoOpGone = {?NoOpGone} SET @NoOpHold = {?NoOpHold} SET @NoOpPatch = {?NoOpPatch} SET @NoOpRing = {?NoOpRing} SET @NoOpWait = {?NoOpWait} SET @NoOpZero = {?NoOpZero} DECLARE @AnswerRing int, @AnswerAhold int, @AnswerZero int SET @AnswerRing = {?AnswerRing} SET @AnswerAhold = {?AnswerAhold} SET @AnswerZero = {?AnswerZero} --test values --SET @NoOpAhold = 0 --SET @NoOpDisc = 0 --SET @NoOpGone = 0 --SET @NoOpHold = 0 --SET @NoOpPatch = 0 --SET @NoOpRing = 0 --SET @NoOpWait = 1 --SET @NoOpZero = 0 --Get All of the Accounts declare @Accounts table (Account bigint) INSERT INTO @Accounts (Account) select DISTINCT Account FROM mCallBusied WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mCallEnd WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mClientMaint WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mConfBridge WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mDial WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mDialService WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mMessageTaken WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mMessageDelivered WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mModemOut WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mVoiceErased WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB UNION select DISTINCT Account FROM mWebCall WHERE [Timestamp] BETWEEN @StartInfTime AND @EndInfTime AND Account BETWEEN @SA AND @EA AND Billing BETWEEN @SB AND @EB --CallBusied Table declare @CallBusied table (Account bigint, Busied bigint) INSERT INTO @CallBusied (Account, Busied) SELECT Account, COUNT(ID) FROM mCallBusied WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --CallEnd Table declare @CallEnd table (Account bigint, Billing bigint, Client nvarchar(30), SecNoOp bigint, SecOp bigint, CheckNoOp bigint, CheckOp bigint, PatchNoOp bigint, PatchOp bigint, NonLiveNoOp bigint, NonLiveOp bigint, SecNoOpTime bigint, SecOpTime bigint, CheckNoOpTime bigint, CheckOpTime bigint, PatchNoOpTime bigint, PatchOpTime bigint, NonLiveNoOpTime bigint, NonLiveOpTime bigint, AnswerTime bigint, HoldTime bigint, CallsHeld bigint, CheckNoMsg bigint, PrcntCheckNoMsg decimal(9,3), PrcntHeld decimal(9,3), AvgHoldTime decimal(9,3), AvgAnswerTime decimal(9,3), SecTalkTime bigint, CheckTalkTime bigint, NonLiveTalkTime bigint, SecHoldTime bigint, CheckHoldTime bigint, NonLiveHoldTime bigint, SecDiscTime bigint, CheckDiscTime bigint, NonLiveDiscTime bigint, OpAssigned bigint, OpAnswered bigint, OpAbandoned bigint, AcctGroup bigint, TotalConfTime bigint, TotalConfNum bigint, TTY bigint, TTYOp bigint, TTYNoOp bigint) INSERT INTO @CallEnd (Account, Billing, Client, SecNoOp, SecOp, CheckNoOp, CheckOp,PatchNoOp, PatchOp, NonLiveNoOp, NonLiveOp, SecNoOpTime, SecOpTime, CheckNoOpTime, CheckOpTime, PatchNoOpTime, PatchOpTime, NonLiveNoOpTime, NonLiveOpTime, AnswerTime, HoldTime, CallsHeld, CheckNoMsg, PrcntCheckNoMsg, PrcntHeld, SecTalkTime, CheckTalkTime, NonLiveTalkTime, SecHoldTime, CheckHoldTime, NonLiveHoldTime, SecDiscTime, CheckDiscTime, NonLiveDiscTime, OpAssigned, OpAnswered, OpAbandoned, AcctGroup, TotalConfTime, TotalConfNum, TTY, TTYOp, TTYNoOp) SELECT Account, MAX(Billing), MAX(Client), --Count Fields(Sec, Chk, Patch, NonLive) SUM(CASE CallKind WHEN 0 THEN (CASE OpTime WHEN 0 THEN 1 ELSE 0 END) ELSE 0 END) AS SecNoOp, SUM(CASE CallKind WHEN 0 THEN(CASE OpTime WHEN 0 THEN 0 ELSE 1 END) ELSE 0 END) AS SecOp, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (CASE OpTime WHEN 0 THEN 1 ELSE 0 END) ELSE 0 END) AS CheckNoOp, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (CASE OpTime WHEN 0 THEN 0 ELSE 1 END) ELSE 0 END) AS CheckOp, SUM(CASE Ptch WHEN 0 THEN 0 ELSE (CASE OpTime WHEN 0 THEN 1 ELSE 0 END) END) AS PatchNoOp, SUM(CASE Ptch WHEN 0 THEN 0 ELSE (CASE OpTime WHEN 0 THEN 0 ELSE 1 END) END) AS PatchOp, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN 0 ELSE (CASE OpTime WHEN 0 THEN 1 ELSE 0 END) END) AS NonLiveNoOp, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN 0 ELSE (CASE OpTime WHEN 0 THEN 0 ELSE 1 END) END) AS NonLiveOp, --Time Fields(Sec, Chk, Patch, NonLive) SUM(CASE CallKind WHEN 0 THEN (CASE WHEN (@NoOpAhold + @NoOpDisc + @NoOpGone + @NoOpHold + @NoOpPatch + @NoOpRing + @NoOpWait + @NoOpZero) = 0 THEN (Duration - OpTime) ELSE ((CASE WHEN @NoOpAhold > 0 THEN (Ahold - HiAhold) ELSE 0 END) + (CASE WHEN @NoOpDisc > 0 THEN (Disc - HiDisc) ELSE 0 END) + (CASE WHEN @NoOpGone > 0 THEN (Gone - HiGone) ELSE 0 END) + (CASE WHEN @NoOpHold > 0 THEN (Hold - HiHold) ELSE 0 END) + (CASE WHEN @NoOpPatch > 0 THEN (Ptch - HiPtch) ELSE 0 END) + (CASE WHEN @NoOpRing > 0 THEN (Ring - HiRing) ELSE 0 END) + (CASE WHEN @NoOpWait > 0 THEN (Wait - HiWait) ELSE 0 END) + (CASE WHEN @NoOpZero > 0 THEN (Zero - HiZero) ELSE 0 END)) END) ELSE 0 END) AS SecNoOpTime, SUM(CASE CallKind WHEN 0 THEN(CASE OpTime WHEN 0 THEN 0 ELSE OpTime END) ELSE 0 END) AS SecOpTime, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (CASE WHEN (@NoOpAhold + @NoOpDisc + @NoOpGone + @NoOpHold + @NoOpPatch + @NoOpRing + @NoOpWait + @NoOpZero) = 0 THEN (Duration - OpTime) ELSE ((CASE WHEN @NoOpAhold > 0 THEN (Ahold - HiAhold) ELSE 0 END) + (CASE WHEN @NoOpDisc > 0 THEN (Disc - HiDisc) ELSE 0 END) + (CASE WHEN @NoOpGone > 0 THEN (Gone - HiGone) ELSE 0 END) + (CASE WHEN @NoOpHold > 0 THEN (Hold - HiHold) ELSE 0 END) + (CASE WHEN @NoOpPatch > 0 THEN (Ptch - HiPtch) ELSE 0 END) + (CASE WHEN @NoOpRing > 0 THEN (Ring - HiRing) ELSE 0 END) + (CASE WHEN @NoOpWait > 0 THEN (Wait - HiWait) ELSE 0 END) + (CASE WHEN @NoOpZero > 0 THEN (Zero - HiZero) ELSE 0 END)) END) ELSE 0 END) AS CheckNoOpTime, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (CASE OpTime WHEN 0 THEN 0 ELSE OpTime END) ELSE 0 END) AS CheckOpTime, SUM(CASE Ptch WHEN 0 THEN 0 ELSE (CASE OpTime WHEN 0 THEN Ptch ELSE (CASE @NewPatch WHEN 0 THEN 0 ELSE (Ptch - HiPtch) END) END) END) AS PatchNoOpTime, SUM(CASE Ptch WHEN 0 THEN 0 ELSE (CASE OpTime WHEN 0 THEN 0 ELSE (CASE @NewPatch WHEN 0 THEN Ptch ELSE (HiPtch + HiConf) END) END) END) AS PatchOpTime, SUM(CASE WHEN CallKind > 1 AND CallKind <> 16 THEN (CASE WHEN (@NoOpAhold + @NoOpDisc + @NoOpGone + @NoOpHold + @NoOpPatch + @NoOpRing + @NoOpWait + @NoOpZero) = 0 THEN (Duration - OpTime) ELSE ((CASE WHEN @NoOpAhold > 0 THEN (Ahold - HiAhold) ELSE 0 END) + (CASE WHEN @NoOpDisc > 0 THEN (Disc - HiDisc) ELSE 0 END) + (CASE WHEN @NoOpGone > 0 THEN (Gone - HiGone) ELSE 0 END) + (CASE WHEN @NoOpHold > 0 THEN (Hold - HiHold) ELSE 0 END) + (CASE WHEN @NoOpPatch > 0 THEN (Ptch - HiPtch) ELSE 0 END) + (CASE WHEN @NoOpRing > 0 THEN (Ring - HiRing) ELSE 0 END) + (CASE WHEN @NoOpWait > 0 THEN (Wait - HiWait) ELSE 0 END) + (CASE WHEN @NoOpZero > 0 THEN (Zero - HiZero) ELSE 0 END)) END) ELSE 0 END) AS NonLiveNoOpTime, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN 0 ELSE (CASE OpTime WHEN 0 THEN 0 ELSE OpTime END) END) AS NonLiveOpTime, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN (CASE WHEN (@AnswerRing + @AnswerAhold + @AnswerZero) > 0 THEN ((CASE WHEN @AnswerRing = 1 THEN Ring ELSE 0 END) + (CASE WHEN @AnswerAhold = 1 THEN Ahold ELSE 0 END) + (CASE WHEN @AnswerZero = 1 THEN Zero ELSE 0 END)) ELSE 0 END) ELSE 0 END) AS AnswerTime, SUM(CASE WHEN ((CallKind < 2 OR CallKind = 16) AND OpTime > 0) THEN Hold ELSE 0 END) AS HoldTime, SUM(CASE WHEN ((CallKind < 2 OR CallKind = 16) AND OpTime > 0) THEN (CASE Hold WHEN 0 THEN 0 ELSE 1 END) ELSE 0 END) AS CallsHeld, SUM(CASE WHEN (CallKind = 1 OR CallKind = 16) AND (NoMessage > 0) THEN 1 ELSE 0 END) as CheckNoMsg, CAST(SUM(CASE WHEN CallKind = 0 OR CallKind = 1 OR CallKind = 16 THEN (CASE OpTime WHEN 0 THEN 0 ELSE 1 END) ELSE 0 END) AS DECIMAL(9,3)) AS PrcntCheckNoMsg, CAST(SUM(CASE WHEN CallKind = 0 OR CallKInd = 1 OR CallKind = 16 THEN (CASE OpTime WHEN 0 THEN 0 ELSE 1 END) ELSE 0 END) AS DECIMAL(9,3)) AS PrcntHeld, --Talk Time SUM(CASE CallKind WHEN 0 THEN (CASE WHEN @ParadoxTalk = 1 THEN (HiTalk + HiTk1 + HiTk2 + HiConf) ELSE HiTalk END) ELSE 0 END) as SecTalkTime, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (CASE WHEN @ParadoxTalk = 1 THEN (HiTalk + HiTk1 + HiTk2 + HiConf) ELSE HiTalk END) ELSE 0 END) as CheckTalkTime, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN 0 ELSE (CASE WHEN @ParadoxTalk = 1 THEN (HiTalk + HiTk1 + HiTk2 + HiConf) ELSE HiTalk END) END) as NonLiveTalkTime, ---Hold Time SUM(CASE CallKind WHEN 0 THEN (HiHold) ELSE 0 END) as SecHoldTime, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (HiHold) ELSE 0 END) as CheckHoldTime, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN 0 ELSE (HiHold) END) as NonLiveHoldTime, --Disc Time SUM(CASE CallKind WHEN 0 THEN (HiDisc) ELSE 0 END) as SecDiscTime, SUM(CASE WHEN CallKind = 1 OR CallKind = 16 THEN (HiDisc) ELSE 0 END) as CheckDiscTime, SUM(CASE WHEN CallKind < 2 OR CallKind = 16 THEN 0 ELSE (HiDisc) END) as NonLiveDiscTime, SUM(CASE Assigned WHEN 0 THEN 0 ELSE 1 END) as OpAssigned, SUM(CASE Answered WHEN 0 THEN 0 ELSE 1 END) as OpAnswered, SUM(CASE Abandoned WHEN 0 THEN 0 ELSE (CASE Ptch WHEN 0 THEN 1 ELSE 0 END) END) as OpAbandoned, MAX(AcctGroup) AS AcctGroup, --ConfBridge Stats SUM(CASE VConf WHEN 0 THEN 0 ELSE Duration END) as TotalConfTime, SUM(CASE VConf WHEN 0 THEN 0 ELSE 1 END) as TotalConfNum, --TTY SUM(CASE TTY WHEN 0 THEN 0 ELSE 1 END) as TTY, SUM(CASE TTY WHEN 0 THEN 0 ELSE OpTime END) as TTYOp, SUM(CASE TTY WHEN 0 THEN 0 ELSE (CASE WHEN (Duration - OpTime) < 0 THEN 0 ELSE (Duration - OpTime) END) END) as TTYNoOp FROM mCallEnd WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND ([Timestamp] BETWEEN @StartInfTime AND @EndInfTime) AND (Xdial = 0 OR TTY > 0) GROUP BY Account --CallEndPBX Table declare @CallEndPBX table (Account bigint, DialoutPBX bigint, DialoutPBXTime bigint, PatchPBX bigint, PatchPBXTime bigint) INSERT INTO @CallEndPBX (Account, DialoutPBX, DialoutPBXTime, PatchPBX, PatchPBXTime) SELECT Account, --DialoutPBX SUM(CASE XDial WHEN 0 THEN 0 ELSE (CASE TTY WHEN 0 THEN 1 ELSE 0 END) END) as DialoutPBX, SUM(CASE XDial WHEN 0 THEN 0 ELSE (CASE TTY WHEN 0 THEN Duration ELSE 0 END) END) as DialoutPBXTime, --PatchPBX SUM(CASE XDial WHEN 0 THEN 0 ELSE (CASE TTY WHEN 0 THEN (CASE Ptch WHEN 0 THEN 0 ELSE 1 END) ELSE 0 END) END) as PatchPBX, SUM(CASE XDial WHEN 0 THEN 0 ELSE (CASE TTY WHEN 0 THEN (CASE Ptch WHEN 0 THEN 0 ELSE Duration END) ELSE 0 END) END) as PatchPBXTime FROM mCallEnd WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND ([Timestamp] BETWEEN @StartInfTime AND @EndInfTime) AND (Xdial > 0 AND TTY = 0) GROUP BY Account --ClientMaint Table declare @ClientMaint table (Account bigint, SuperTime bigint) INSERT INTO @ClientMaint (Account, SuperTime) SELECT Account, ISNULL(SUM(SuperTime), 0) AS SuperTime FROM mClientMaint WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND ([Timestamp] BETWEEN @StartInfTime AND @EndInfTime) AND ((@ClientMaintChange = 1 AND Changed > 0 ) OR (@ClientMaintChange = 0)) GROUP BY Account --ConfBridge Table declare @ConfBridge table (Account bigint, TotalConfPartTime bigint, TotalConfPartNum bigint) INSERT INTO @ConfBridge (Account, TotalConfPartTime, TotalConfPartNum) SELECT Account, SUM(Duration) as TotalConfPartTime, Count(ID) as TotalConfPartNum FROM mConfBridge WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --Dialout Table declare @Dialout table (Account bigint, DialoutNoOp bigint, DialoutOp bigint, DialoutNoOpTime bigint, DialoutOpTime bigint) INSERT INTO @Dialout (Account, DialoutNoOp, DialoutOp, DialoutNoOpTime, DialoutOpTime) SELECT Account, SUM(CASE LTRIM(RTRIM(ISNULL(Initials, ''))) WHEN '' THEN 1 WHEN 'aut' THEN 1 WHEN 'chk' THEN 1 WHEN 'vm' THEN 1 ELSE 0 END) as DialoutNoOp, SUM(CASE LTRIM(RTRIM(ISNULL(Initials, ''))) WHEN '' THEN 0 WHEN 'aut' THEN 0 WHEN 'chk' THEN 0 WHEN 'vm' THEN 0 ELSE 1 END) as DialoutOp, SUM(CASE LTRIM(RTRIM(ISNULL(Initials, ''))) WHEN '' THEN Duration WHEN 'aut' THEN Duration WHEN 'chk' THEN Duration WHEN 'vm' THEN Duration ELSE 0 END) as DialoutNoOpTime, SUM(CASE LTRIM(RTRIM(ISNULL(Initials, ''))) WHEN '' THEN 0 WHEN 'aut' THEN 0 WHEN 'chk' THEN 0 WHEN 'vm' THEN 0 ELSE Duration END) as DialoutOpTime FROM mDial WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND ([Timestamp] BETWEEN @StartInfTime AND @EndInfTime) AND (Seized <> 0) GROUP BY Account --DialService Table declare @DialService table (Account bigint, List0 bigint, ListName0 nvarchar(12), List1 bigint, ListName1 nvarchar(12), List2 bigint, ListName2 nvarchar(12), List3 bigint, ListName3 nvarchar(12), List4 bigint, ListName4 nvarchar(12), List5 bigint, ListName5 nvarchar(12), List6 bigint, ListName6 nvarchar(12), List7 bigint, ListName7 nvarchar(12), List8 bigint, ListName8 nvarchar(12), List9 bigint, ListName9 nvarchar(12), List10 bigint, ListName10 nvarchar(12), List11 bigint, ListName11 nvarchar(12), List12 bigint, ListName12 nvarchar(12), List13 bigint, ListName13 nvarchar(12), List5013 bigint, ListName5013 nvarchar(12), List5014 bigint, ListName5014 nvarchar(12), List5015 bigint, ListName5015 nvarchar(12), List5016 bigint, ListName5016 nvarchar(12), List5017 bigint, ListName5017 nvarchar(12), List5018 bigint, ListName5018 nvarchar(12), List5019 bigint, ListName5019 nvarchar(12), List5020 bigint, ListName5020 nvarchar(12), List5021 bigint, ListName5021 nvarchar(12), List5022 bigint, ListName5022 nvarchar(12), List5023 bigint, ListName5023 nvarchar(12), List5024 bigint, ListName5024 nvarchar(12), XferList1 bigint, XferListName1 nvarchar(12), XferList2 bigint, XferListName2 nvarchar(12), XferList3 bigint, XferListName3 nvarchar(12), XferList4 bigint, XferListName4 nvarchar(12), XferList5 bigint, XferListName5 nvarchar(12), XferList6 bigint, XferListName6 nvarchar(12), XferList7 bigint, XferListName7 nvarchar(12), XferList8 bigint, XferListName8 nvarchar(12), XferList9 bigint, XferListName9 nvarchar(12), XferList10 bigint, XferListName10 nvarchar(12), XferList11 bigint, XferListName11 nvarchar(12), XferList12 bigint, XferListName12 nvarchar(12), OncallList bigint, OncallListName nvarchar(12)) INSERT INTO @DialService (Account, List0, ListName0, List1, ListName1, List2, ListName2, List3, ListName3, List4, ListName4, List5, ListName5, List6, ListName6, List7, ListName7, List8, ListName8, List9, ListName9, List10, ListName10, List11, ListName11, List12, ListName12, List13, ListName13, List5013, ListName5013, List5014, ListName5014, List5015, ListName5015, List5016, ListName5016, List5017, ListName5017, List5018, ListName5018, List5019, ListName5019, List5020, ListName5020, List5021, ListName5021, List5022, ListName5022, List5023, ListName5023, List5024, ListName5024, XferList1, XferListName1, XferList2, XferListName2, XferList3, XferListName3, XferList4, XferListName4, XferList5, XferListName5, XferList6, XferListName6, XferList7, XferListName7, XferList8, XferListName8, XferList9, XferListName9, XferList10, XferListName10, XferList11, XferListName11, XferList12, XferListName12, OncallList, OncallListName) SELECT Account, --List 0 SUM(CASE LIST WHEN 0 THEN 1 ELSE 0 END) AS List0, ' ' AS ListName0, --List 1-12 SUM(CASE List WHEN 1 THEN 1 ELSE 0 END) AS List1, ISNULL(MAX(CASE List WHEN 1 THEN ListName END),' ') AS ListName1, SUM(CASE List WHEN 2 THEN 1 ELSE 0 END) AS List2, ISNULL(MAX(CASE List WHEN 2 THEN ListName END),' ') AS ListName2, SUM(CASE List WHEN 3 THEN 1 ELSE 0 END) AS List3, ISNULL(MAX(CASE List WHEN 3 THEN ListName END),' ') AS ListName3, SUM(CASE List WHEN 4 THEN 1 ELSE 0 END) AS List4, ISNULL(MAX(CASE List WHEN 4 THEN ListName END),' ') AS ListName4, SUM(CASE List WHEN 5 THEN 1 ELSE 0 END) AS List5, ISNULL(MAX(CASE List WHEN 5 THEN ListName END),' ') AS ListName5, SUM(CASE List WHEN 6 THEN 1 ELSE 0 END) AS List6, ISNULL(MAX(CASE List WHEN 6 THEN ListName END),' ') AS ListName6, SUM(CASE List WHEN 7 THEN 1 ELSE 0 END) AS List7, ISNULL(MAX(CASE List WHEN 7 THEN ListName END),' ') AS ListName7, SUM(CASE List WHEN 8 THEN 1 ELSE 0 END) AS List8, ISNULL(MAX(CASE List WHEN 8 THEN ListName END),' ') AS ListName8, SUM(CASE List WHEN 9 THEN 1 ELSE 0 END) AS List9, ISNULL(MAX(CASE List WHEN 9 THEN ListName END),' ') AS ListName9, SUM(CASE List WHEN 10 THEN 1 ELSE 0 END) AS List10, ISNULL(MAX(CASE List WHEN 10 THEN ListName END),' ') AS ListName10, SUM(CASE List WHEN 11 THEN 1 ELSE 0 END) AS List11, ISNULL(MAX(CASE List WHEN 11 THEN ListName END),' ') AS ListName11, SUM(CASE List WHEN 12 THEN 1 ELSE 0 END) AS List12, ISNULL(MAX(CASE List WHEN 12 THEN ListName END),' ') AS ListName12, --List 13 SUM(CASE WHEN List < 13 THEN 0 WHEN List > 5012 THEN 0 ELSE 1 END) AS List13, ' ' AS ListName13, --List 5013-5024 SUM(CASE List WHEN 5013 THEN 1 ELSE 0 END) AS List5013, ISNULL(MAX(CASE List WHEN 5013 THEN ListName END),' ') AS ListName5013, SUM(CASE List WHEN 5014 THEN 1 ELSE 0 END) AS List5014, ISNULL(MAX(CASE List WHEN 5014 THEN ListName END),' ') AS ListName5014, SUM(CASE List WHEN 5015 THEN 1 ELSE 0 END) AS List5015, ISNULL(MAX(CASE List WHEN 5015 THEN ListName END),' ') AS ListName5015, SUM(CASE List WHEN 5016 THEN 1 ELSE 0 END) AS List5016, ISNULL(MAX(CASE List WHEN 5016 THEN ListName END),' ') AS ListName5016, SUM(CASE List WHEN 5017 THEN 1 ELSE 0 END) AS List5017, ISNULL(MAX(CASE List WHEN 5017 THEN ListName END),' ') AS ListName5017, SUM(CASE List WHEN 5018 THEN 1 ELSE 0 END) AS List5018, ISNULL(MAX(CASE List WHEN 5018 THEN ListName END),' ') AS ListName5018, SUM(CASE List WHEN 5019 THEN 1 ELSE 0 END) AS List5019, ISNULL(MAX(CASE List WHEN 5019 THEN ListName END),' ') AS ListName5019, SUM(CASE List WHEN 5020 THEN 1 ELSE 0 END) AS List5020, ISNULL(MAX(CASE List WHEN 5020 THEN ListName END),' ') AS ListName5020, SUM(CASE List WHEN 5021 THEN 1 ELSE 0 END) AS List5021, ISNULL(MAX(CASE List WHEN 5021 THEN ListName END),' ') AS ListName5021, SUM(CASE List WHEN 5022 THEN 1 ELSE 0 END) AS List5022, ISNULL(MAX(CASE List WHEN 5022 THEN ListName END),' ') AS ListName5022, SUM(CASE List WHEN 5023 THEN 1 ELSE 0 END) AS List5023, ISNULL(MAX(CASE List WHEN 5023 THEN ListName END),' ') AS ListName5023, SUM(CASE List WHEN 5024 THEN 1 ELSE 0 END) AS List5024, ISNULL(MAX(CASE List WHEN 5024 THEN ListName END),' ') AS ListName5024, --XferList 1-12 SUM(CASE List WHEN -1 THEN 1 ELSE 0 END) AS XferList1, ISNULL(MAX(CASE List WHEN -1 THEN ListName END),' ') AS XferListName1, SUM(CASE List WHEN -2 THEN 1 ELSE 0 END) AS XferList2, ISNULL(MAX(CASE List WHEN -2 THEN ListName END),' ') AS XferListName2, SUM(CASE List WHEN -3 THEN 1 ELSE 0 END) AS XferList3, ISNULL(MAX(CASE List WHEN -3 THEN ListName END),' ') AS XferListName3, SUM(CASE List WHEN -4 THEN 1 ELSE 0 END) AS XferList4, ISNULL(MAX(CASE List WHEN -4 THEN ListName END),' ') AS XferListName4, SUM(CASE List WHEN -5 THEN 1 ELSE 0 END) AS XferList5, ISNULL(MAX(CASE List WHEN -5 THEN ListName END),' ') AS XferListName5, SUM(CASE List WHEN -6 THEN 1 ELSE 0 END) AS XferList6, ISNULL(MAX(CASE List WHEN -6 THEN ListName END),' ') AS XferListName6, SUM(CASE List WHEN -7 THEN 1 ELSE 0 END) AS XferList7, ISNULL(MAX(CASE List WHEN -7 THEN ListName END),' ') AS XferListName7, SUM(CASE List WHEN -8 THEN 1 ELSE 0 END) AS XferList8, ISNULL(MAX(CASE List WHEN -8 THEN ListName END),' ') AS XferListName8, SUM(CASE List WHEN -9 THEN 1 ELSE 0 END) AS XferList9, ISNULL(MAX(CASE List WHEN -9 THEN ListName END),' ') AS XferListName9, SUM(CASE List WHEN -10 THEN 1 ELSE 0 END) AS XferList10, ISNULL(MAX(CASE List WHEN -10 THEN ListName END),' ') AS XferListName10, SUM(CASE List WHEN -11 THEN 1 ELSE 0 END) AS XferList11, ISNULL(MAX(CASE List WHEN -11 THEN ListName END),' ') AS XferListName11, SUM(CASE List WHEN -12 THEN 1 ELSE 0 END) AS XferList12, ISNULL(MAX(CASE List WHEN -12 THEN ListName END),' ') AS XferListName12, --OnCall List SUM(CASE List WHEN 5025 THEN 1 ELSE 0 END) AS List5025, ISNULL(MAX(CASE List WHEN 5025 THEN ListName END),' ') AS ListName5025 FROM mDialService WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND ([Timestamp] BETWEEN @StartInfTime AND @EndInfTime) GROUP BY Account --MessageDelivered Table declare @MessageDelivered table (Account bigint, SecMU bigint) INSERT INTO @MessageDelivered (Account, SecMU) SELECT Account, ISNULL(SUM(SecMU), 0) AS SecMU FROM mMessageDelivered WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --MessageTaken Table declare @MessageTaken table (Account bigint, Special bigint, "Text" bigint, Voice bigint) INSERT INTO @MessageTaken (Account, Special, "Text", Voice) SELECT Account, SUM(Special) as Special, SUM([Text]) as "Text", SUM(Voice) as Voice FROM mMessageTaken WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --ModemIn Table declare @ModemIn table (Account bigint, DataIn bigint, DataInTime bigint) INSERT INTO @ModemIn (Account, DataIn, DataInTime) SELECT Account, Count(ID) as DataIn, Sum(Duration) as DataInTime FROM mModemIn WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --ModemOut Table declare @ModemOut table (Account bigint, DataOut bigint, DataOutTime bigint, AlphaPages bigint, RemotePrints bigint, PacketCount bigint) INSERT INTO @ModemOut (Account, DataOut, DataOutTime, AlphaPages, RemotePrints, PacketCount) SELECT Account, Count(ID) as DataOut, Sum(Duration) as DataOutTime, SUM(CASE PacketCount WHEN 0 THEN 0 ELSE 1 END) AS AlphaPages, SUM(CASE PacketCount WHEN 0 THEN 1 ELSE 0 END) AS RemotePrints, SUM(PacketCount) as PacketCount FROM mModemOut WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --VoiceErased Table declare @VoiceErased table (Account bigint, VMMU bigint) INSERT INTO @VoiceErased (Account, VMMU) SELECT Account, ISNULL(SUM(VMMU), 0) AS VMMU FROM mVoiceErased WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND [Timestamp] BETWEEN @StartInfTime AND @EndInfTime GROUP BY Account --WebCall Table declare @WebCall table (Account bigint, WebChatCount bigint, WebChatTime bigint, WebCallbackCount bigint, WebCallbackTime bigint, WebEmailCount bigint, WebEmailTime bigint, WebEcreatorCount bigint, WebEcreatorTime bigint, WebBrowserCount bigint, WebBrowserTime bigint, WebOtherCount bigint, WebOtherTime bigint) --WebCall INSERT INTO @WebCall (Account, WebChatCount, WebChatTime, WebCallbackCount, WebCallbackTime, WebEmailCount, WebEmailTime, WebEcreatorCount, WebEcreatorTime, WebBrowserCount, WebBrowserTime, WebOtherCount, WebOtherTime) SELECT Account, ISNULL(SUM(CASE WebCallKind WHEN 1 THEN 1 ELSE 0 END), 0) AS WebChatCount, ISNULL(SUM(CASE WebCallKind WHEN 1 THEN Duration ELSE 0 END), 0) AS WebChatTime, ISNULL(SUM(CASE WebCallKind WHEN 2 THEN 1 ELSE 0 END), 0) AS WebCallBackCount, ISNULL(SUM(CASE WebCallKind WHEN 2 THEN Duration ELSE 0 END), 0) AS WebCallBackTime, ISNULL(SUM(CASE WebCallKind WHEN 3 THEN 1 ELSE 0 END), 0) AS WebEmailCount, ISNULL(SUM(CASE WebCallKind WHEN 3 THEN Duration ELSE 0 END), 0) AS WebEmailTime, ISNULL(SUM(CASE WebCallKind WHEN 4 THEN 1 ELSE 0 END), 0) AS WebEcreatorCount, ISNULL(SUM(CASE WebCallKind WHEN 4 THEN Duration ELSE 0 END), 0) AS WebEcreatorTime, ISNULL(SUM(CASE WebCallKind WHEN 5 THEN 1 ELSE 0 END), 0) AS WebBrowserCount, ISNULL(SUM(CASE WebCallKind WHEN 5 THEN Duration ELSE 0 END), 0) AS WebBrowserTime, ISNULL(SUM(CASE WebCallKind WHEN 6 THEN 1 ELSE 0 END), 0) AS WebOtherCount, ISNULL(SUM(CASE WebCallKind WHEN 6 THEN Duration ELSE 0 END), 0) AS WebOtherTime FROM mWebCall WHERE (Account BETWEEN @SA AND @EA) AND (Billing BETWEEN @SB AND @EB) AND ([Timestamp] BETWEEN @StartInfTime AND @EndInfTime) GROUP BY Account --Stats table declare @Stats table (Account bigint, Billing bigint, Client nvarchar(30), SecNoOp bigint, SecOp bigint, CheckNoOp bigint, CheckOp bigint, PatchNoOp bigint, PatchOp bigint, NonLiveNoOp bigint, NonLiveOp bigint, SecNoOpTime bigint, SecOpTime bigint, CheckNoOpTime bigint, CheckOpTime bigint, PatchNoOpTime bigint, PatchOpTime bigint, NonLiveNoOpTime bigint, NonLiveOpTime bigint, AnswerTime bigint, HoldTime bigint, CallsHeld bigint, CheckNoMsg bigint, PrcntCheckNoMsg decimal(9,3), PrcntHeld decimal(9,3), AvgHoldTime decimal(9,3), AvgAnswerTime decimal(9,3), SecTalkTime bigint, CheckTalkTime bigint, NonLiveTalkTime bigint, SecHoldTime bigint, CheckHoldTime bigint, NonLiveHoldTime bigint, SecDiscTime bigint, CheckDiscTime bigint, NonLiveDiscTime bigint, OpAssigned bigint, OpAnswered bigint, OpAbandoned bigint, Special bigint, "Text" bigint, Voice bigint, DataOut bigint, DataIn bigint, List0 bigint, ListName0 nvarchar(12), List1 bigint, ListName1 nvarchar(12), List2 bigint, ListName2 nvarchar(12), List3 bigint, ListName3 nvarchar(12), List4 bigint, ListName4 nvarchar(12), List5 bigint, ListName5 nvarchar(12), List6 bigint, ListName6 nvarchar(12), List7 bigint, ListName7 nvarchar(12), List8 bigint, ListName8 nvarchar(12), List9 bigint, ListName9 nvarchar(12), List10 bigint, ListName10 nvarchar(12), List11 bigint, ListName11 nvarchar(12), List12 bigint, ListName12 nvarchar(12), List13 bigint, ListName13 nvarchar(12), DataOutTime bigint, DataInTime bigint, SecMU bigint, VMMU bigint, DialoutNoOp bigint, DialoutOp bigint, DialoutNoOpTime bigint, DialoutOpTime bigint, Busies bigint, PacketCount bigint, SuperTime bigint, NumberAccounts bigint, List5013 bigint, ListName5013 nvarchar(12), List5014 bigint, ListName5014 nvarchar(12), List5015 bigint, ListName5015 nvarchar(12), List5016 bigint, ListName5016 nvarchar(12), List5017 bigint, ListName5017 nvarchar(12), List5018 bigint, ListName5018 nvarchar(12), List5019 bigint, ListName5019 nvarchar(12), List5020 bigint, ListName5020 nvarchar(12), List5021 bigint, ListName5021 nvarchar(12), List5022 bigint, ListName5022 nvarchar(12), List5023 bigint, ListName5023 nvarchar(12), List5024 bigint, ListName5024 nvarchar(12), DialoutPBX bigint, DialoutPBXTime bigint, WebChatCount bigint, WebChatTime bigint, WebCallBackCount bigint, WebCallBackTime bigint, WebEmailCount bigint, WebEmailTime bigint, WebEcreatorCount bigint, WebEcreatorTime bigint, WebBrowserCount bigint, WebBrowserTime bigint, WebOtherCount bigint, WebOtherTime bigint, XferList1 bigint, XferListName1 nvarchar(12), XferList2 bigint, XferListName2 nvarchar(12), XferList3 bigint, XferListName3 nvarchar(12), XferList4 bigint, XferListName4 nvarchar(12), XferList5 bigint, XferListName5 nvarchar(12), XferList6 bigint, XferListName6 nvarchar(12), XferList7 bigint, XferListName7 nvarchar(12), XferList8 bigint, XferListName8 nvarchar(12), XferList9 bigint, XferListName9 nvarchar(12), XferList10 bigint, XferListName10 nvarchar(12), XferList11 bigint, XferListName11 nvarchar(12), XferList12 bigint, XferListName12 nvarchar(12), AcctGroup bigint, PatchPBX bigint, PatchPBXTime bigint, AlphaPages bigint, RemotePrints bigint, OncallList bigint, OncallListName nvarchar(12), TotalConfTime bigint, TotalConfNum bigint, TotalConfPartTime bigint, TotalConfPartNum bigint, TTY bigint, TTYOp bigint, TTYNoOp bigint) INSERT INTO @Stats (Account, Billing, Client, SecNoOp, SecOp, CheckNoOp, CheckOp, PatchNoOp, PatchOp, NonLiveNoOp, NonLiveOp, SecNoOpTime, SecOpTime, CheckNoOpTime, CheckOpTime, PatchNoOpTime, PatchOpTime, NonLiveNoOpTime, NonLiveOpTime, AnswerTime, HoldTime, CallsHeld, CheckNoMsg, PrcntCheckNoMsg, PrcntHeld, AvgHoldTime, AvgAnswerTime, SecTalkTime, CheckTalkTime, NonLiveTalkTime, SecHoldTime, CheckHoldTime, NonLiveHoldTime, SecDiscTime, CheckDiscTime, NonLiveDiscTime, OpAssigned, OpAnswered, OpAbandoned, Special, "Text", Voice, DataOut, DataIn, List0, ListName0, List1, ListName1, List2, ListName2, List3, ListName3, List4, ListName4, List5, ListName5, List6, ListName6, List7, ListName7, List8, ListName8, List9, ListName9, List10, ListName10, List11, ListName11, List12, ListName12, List13, ListName13, DataOutTime, DataInTime, SecMU, VMMU, DialoutNoOp, DialoutOp, DialoutNoOpTime, DialoutOpTime, Busies, PacketCount, SuperTime, NumberAccounts, List5013, ListName5013, List5014, ListName5014, List5015, ListName5015, List5016, ListName5016, List5017, ListName5017, List5018, ListName5018, List5019, ListName5019, List5020, ListName5020, List5021, ListName5021, List5022, ListName5022, List5023, ListName5023, List5024, ListName5024, DialoutPBX, DialoutPBXTime, WebChatCount, WebChatTime, WebCallBackCount, WebCallBackTime, WebEmailCount, WebEmailTime, WebEcreatorCount, WebEcreatorTime, WebBrowserCount, WebBrowserTime, WebOtherCount, WebOtherTime, XferList1, XferListName1, XferList2, XferListName2, XferList3, XferListName3, XferList4, XferListName4, XferList5, XferListName5, XferList6, XferListName6, XferList7, XferListName7, XferList8, XferListName8, XferList9, XferListName9, XferList10, XferListName10, XferList11, XferListName11, XferList12, XferListName12, AcctGroup, PatchPBX, PatchPBXTime, AlphaPages, RemotePrints, OncallList, OncallListName, TotalConfTime, TotalConfNum, TotalConfPartTime, TotalConfPartNum, TTY, TTYOp, TTYNoOp) -- Join results SELECT A.Account, ISNULL(MAX(CE.Billing), 0) as Billing, ISNULL(MAX(CE.Client), ' ') as Client, ISNULL(SUM(CE.SecNoOp), 0) as SecNoOp, ISNULL(SUM(CE.SecOp), 0) as SecOp, ISNULL(SUM(CE.CheckNoOp), 0) as CheckNoOp, ISNULL(SUM(CE.CheckOp),0) as CheckOp, ISNULL(SUM(CE.PatchNoOp), 0) as PatchNoOp, ISNULL(SUM(CE.PatchOp), 0) as PatchOp, ISNULL(SUM(CE.NonLiveNoOp), 0) as NonLiveNoOp, ISNULL(SUM(CE.NonLiveOp), 0) as NonLiveOp, --Time fields ISNULL(SUM(CE.SecNoOpTime),0) as SecNoOpTime, ISNULL(SUM(CE.SecOpTime),0) as SecOpTime, ISNULL(SUM(CE.CheckNoOpTime),0) as CheckNoOpTime, ISNULL(SUM(CE.CheckOpTime),0) as CheckOpTime, ISNULL(SUM(CE.PatchNoOpTime),0) as PatchNoOpTime, ISNULL(SUM(CE.PatchOpTime),0) as PatchOpTime, ISNULL(SUM(CE.NonLiveNoOpTime),0) as NonLiveNoOpTime, ISNULL(SUM(CE.NonLiveOpTime),0) as NonLiveOpTime, ISNULL(SUM(CE.AnswerTime),0) as AnswerTime, ISNULL(SUM(CE.HoldTime),0) as HoldTime, ISNULL(SUM(CE.CallsHeld),0) as CallsHeld, ISNULL(SUM(CE.CheckNoMsg),0) as CheckNoMsg, ISNULL(SUM(CE.PrcntCheckNoMsg),0) as PrcntCheckNoMsg, ISNULL(SUM(CE.PrcntHeld),0) as PrcntHeld, ISNULL(SUM(CE.AvgHoldTime),0) as AvgHoldTime, ISNULL(SUM(CE.AvgAnswerTime),0) as AvgAnswerTime, ISNULL(SUM(CE.SecTalkTime),0) as SecTalkTime, ISNULL(SUM(CE.CheckTalkTime),0) as CheckTalkTime, ISNULL(SUM(CE.NonLiveTalkTime),0) as NonLiveTalkTime, ISNULL(SUM(CE.SecHoldTime),0) as SecHoldTime, ISNULL(SUM(CE.CheckHoldTime),0) as CheckHoldTime, ISNULL(SUM(CE.NonLiveHoldTime),0) as NonLiveHoldTime, ISNULL(SUM(CE.SecDiscTime),0) as SecDiscTime, ISNULL(SUM(CE.CheckDiscTime),0) as CheckDiscTime, ISNULL(SUM(CE.NonLiveDiscTime),0) as NonLiveDiscTime, --More counts ISNULL(SUM(CE.OpAssigned),0) as OpAssigned, ISNULL(SUM(CE.OpAnswered),0) as OpAnswered, ISNULL(SUM(CE.OpAbandoned),0) as OpAbandoned, ISNULL(SUM(MT.Special),0) as Special, ISNULL(SUM(MT."Text"),0) as "Text", ISNULL(SUM(MT.Voice),0) as Voice, --Data Counts ISNULL(SUM(MO.DataOut),0) as DataOut, ISNULL(SUM(MI.DataIn),0) as DataIn, --Dial Lists ISNULL(SUM(DS.List0),0) as List0, ' ' as ListName0, ISNULL(SUM(DS.List1),0) as List1, ' ' as ListName1, ISNULL(SUM(DS.List2),0) as List2, ' ' as ListName2, ISNULL(SUM(DS.List3),0) as List3, ' ' as ListName3, ISNULL(SUM(DS.List4),0) as List4, ' ' as ListName4, ISNULL(SUM(DS.List5),0) as List5, ' ' as ListName5, ISNULL(SUM(DS.List6),0) as List6, ' ' as ListName6, ISNULL(SUM(DS.List7),0) as List7, ' ' as ListName7, ISNULL(SUM(DS.List8),0) as List8, ' ' as ListName8, ISNULL(SUM(DS.List9),0) as List9, ' ' as ListName9, ISNULL(SUM(DS.List10),0) as List10, ' ' as ListName10, ISNULL(SUM(DS.List11),0) as List11, ' ' as ListName11, ISNULL(SUM(DS.List12),0) as List12, ' ' as ListName12, ISNULL(SUM(DS.List13),0) as List13, ' ' as ListName13, --Data Time Values ISNULL(SUM(MO.DataOutTime),0) as DataOutTime, ISNULL(SUM(MI.DataInTime), 0) as DataInTime, --Message Units ISNULL(SUM(MD.SecMU), 0) as SecMU, ISNULL(SUM(VE.VMMU), 0) as VMMU, --Dialout Counts and Time Values ISNULL(SUM(D.DialoutNoOp), 0) as DialoutNoOp, ISNULL(SUM(D.DialoutOp), 0) as DialoutOp, ISNULL(SUM(D.DialoutNoOpTime), 0) as DialoutNoOpTime, ISNULL(SUM(D.DialoutOpTime), 0) as DialoutOpTime, --Various Counts and Time Values ISNULL(SUM(CB.Busied), 0) as Busies, ISNULL(SUM(MO.PacketCount), 0) as PacketCount, ISNULL(SUM(CM.SuperTime), 0) as SuperTime, ISNULL(COUNT(A.Account), 0) as NumberAccounts, -- Extended Dial List ISNULL(SUM(DS.List5013), 0) as List5013, ' ' as ListName5013, ISNULL(SUM(DS.List5014), 0) as List5014, ' ' as ListName5014, ISNULL(SUM(DS.List5015), 0) as List5015, ' ' as ListName5015, ISNULL(SUM(DS.List5016), 0) as List5016, ' ' as ListName5016, ISNULL(SUM(DS.List5017), 0) as List5017, ' ' as ListName5017, ISNULL(SUM(DS.List5018), 0) as List5018, ' ' as ListName5018, ISNULL(SUM(DS.List5019), 0) as List5019, ' ' as ListName5019, ISNULL(SUM(DS.List5020), 0) as List5020, ' ' as ListName5020, ISNULL(SUM(DS.List5021), 0) as List5021, ' ' as ListName5021, ISNULL(SUM(DS.List5022), 0) as List5022, ' ' as ListName5022, ISNULL(SUM(DS.List5023), 0) as List5023, ' ' as ListName5023, ISNULL(SUM(DS.List5024), 0) as List5024, ' ' as ListName5024, --PBX Dialouts ISNULL(SUM(PBX.DialoutPBX), 0) as DialoutPBX, ISNULL(SUM(PBX.DialoutPBXTime), 0) as DialoutPBXTime, --Web stats ISNULL(SUM(WC.WebChatCount), 0) as WebChatCount, ISNULL(SUM(WC.WebChatTime), 0) as WebChatTime, ISNULL(SUM(WC.WebCallBackCount), 0) as WebCallBackCount, ISNULL(SUM(WC.WebCallBackTime), 0) as WebCallBackTime, ISNULL(SUM(WC.WebEmailCount), 0) as WebEmailCount, ISNULL(SUM(WC.WebEmailTime), 0) as WebEmailTime, ISNULL(SUM(WC.WebEcreatorCount), 0) as WebEcreatorCount, ISNULL(SUM(WC.WebEcreatorTime), 0) as WebEcreatorTime, ISNULL(SUM(WC.WebBrowserCount), 0) as WebBrowserCount, ISNULL(SUM(WC.WebBrowserTime), 0) as WebBrowserTime, ISNULL(SUM(WC.WebOtherCount), 0) as WebOtherCount, ISNULL(SUM(WC.WebOtherTime), 0) as WebOtherTime, --Xfer lists ISNULL(SUM(DS.XferList1), 0) as XferList1, ' ' as XferListName1, ISNULL(SUM(DS.XferList2), 0) as XferList2, ' ' as XferListName2, ISNULL(SUM(DS.XferList3), 0) as XferList3, ' ' as XferListName3, ISNULL(SUM(DS.XferList4), 0) as XferList4, ' ' as XferListName4, ISNULL(SUM(DS.XferList5), 0) as XferList5, ' ' as XferListName5, ISNULL(SUM(DS.XferList6), 0) as XferList6, ' ' as XferListName6, ISNULL(SUM(DS.XferList7), 0) as XferList7, ' ' as XferListName7, ISNULL(SUM(DS.XferList8), 0) as XferList8, ' ' as XferListName8, ISNULL(SUM(DS.XferList9), 0) as XferList9, ' ' as XferListName9, ISNULL(SUM(DS.XferList10), 0) as XferList10, ' ' as XferListName10, ISNULL(SUM(DS.XferList11), 0) as XferList11, ' ' as XferListName11, ISNULL(SUM(DS.XferList12), 0) as XferList12, ' ' as XferListName12, --AcctGroup count ISNULL(SUM(CE.AcctGroup), 0) as AcctGroup, --PBX Patches ISNULL(SUM(PBX.PatchPBX), 0) as PatchPBX, ISNULL(SUM(PBX.PatchPBXTime), 0) as PatchPBXTime, --Various ISNULL(SUM(MO.AlphaPages), 0) as AlphaPages, ISNULL(SUM(MO.RemotePrints), 0) as RemotePrints, ISNULL(SUM(DS.OncallList), 0) as OncallList, ' ' as OncallListName, --Conference stats ISNULL(SUM(CE.TotalConfTime), 0) as TotalConfTime, ISNULL(SUM(CE.TotalConfNum), 0) as TotalConfNum, ISNULL(SUM(COB.TotalConfPartTime), 0) as TotalConfPartTime, ISNULL(SUM(COB.TotalConfPartNum), 0) as TotalConfPartNum, --TTY stats ISNULL(SUM(CE.TTY), 0) as TTY, ISNULL(SUM(CE.TTYOp), 0) as TTYOp, ISNULL(SUM(CE.TTYNoOp), 0) as TTYNoOp FROM @Accounts A LEFT OUTER JOIN @CallBusied CB ON A.Account = CB.Account LEFT OUTER JOIN @CallEnd CE ON A.Account = CE.Account LEFT OUTER JOIN @CallEndPBX PBX ON A.Account = PBX.Account LEFT OUTER JOIN @ClientMaint CM ON A.Account = CM.Account LEFT OUTER JOIN @ConfBridge COB ON A.Account = COB.Account LEFT OUTER JOIN @Dialout D ON A.Account = D.Account LEFT OUTER JOIN @DialService DS ON A.Account = DS.Account LEFT OUTER JOIN @MessageDelivered MD ON A.Account = MD.Account LEFT OUTER JOIN @MessageTaken MT ON A.Account = MT.Account LEFT OUTER JOIN @ModemIn MI ON A.Account = MI.Account LEFT OUTER JOIN @ModemOut MO ON A.Account = MO.Account LEFT OUTER JOIN @VoiceErased VE ON A.Account = VE.Account LEFT OUTER JOIN @WebCall WC ON A.Account = WC.Account GROUP BY A.Account --AllStats table declare @AllStats table (Account bigint, Billing bigint, Client nvarchar(30), SecNoOp bigint, SecOp bigint, CheckNoOp bigint, CheckOp bigint, PatchNoOp bigint, PatchOp bigint, NonLiveNoOp bigint, NonLiveOp bigint, SecNoOpTime bigint, SecOpTime bigint, CheckNoOpTime bigint, CheckOpTime bigint, PatchNoOpTime bigint, PatchOpTime bigint, NonLiveNoOpTime bigint, NonLiveOpTime bigint, AnswerTime bigint, HoldTime bigint, CallsHeld bigint, CheckNoMsg bigint, PrcntCheckNoMsg decimal(9,3), PrcntHeld decimal(9,3), AvgHoldTime decimal(9,3), AvgAnswerTime decimal(9,3), SecTalkTime bigint, CheckTalkTime bigint, NonLiveTalkTime bigint, SecHoldTime bigint, CheckHoldTime bigint, NonLiveHoldTime bigint, SecDiscTime bigint, CheckDiscTime bigint, NonLiveDiscTime bigint, OpAssigned bigint, OpAnswered bigint, OpAbandoned bigint, Special bigint, "Text" bigint, Voice bigint, DataOut bigint, DataIn bigint, List0 bigint, ListName0 nvarchar(12), List1 bigint, ListName1 nvarchar(12), List2 bigint, ListName2 nvarchar(12), List3 bigint, ListName3 nvarchar(12), List4 bigint, ListName4 nvarchar(12), List5 bigint, ListName5 nvarchar(12), List6 bigint, ListName6 nvarchar(12), List7 bigint, ListName7 nvarchar(12), List8 bigint, ListName8 nvarchar(12), List9 bigint, ListName9 nvarchar(12), List10 bigint, ListName10 nvarchar(12), List11 bigint, ListName11 nvarchar(12), List12 bigint, ListName12 nvarchar(12), List13 bigint, ListName13 nvarchar(12), DataOutTime bigint, DataInTime bigint, SecMU bigint, VMMU bigint, DialoutNoOp bigint, DialoutOp bigint, DialoutNoOpTime bigint, DialoutOpTime bigint, Busies bigint, PacketCount bigint, SuperTime bigint, NumberAccounts bigint, List5013 bigint, ListName5013 nvarchar(12), List5014 bigint, ListName5014 nvarchar(12), List5015 bigint, ListName5015 nvarchar(12), List5016 bigint, ListName5016 nvarchar(12), List5017 bigint, ListName5017 nvarchar(12), List5018 bigint, ListName5018 nvarchar(12), List5019 bigint, ListName5019 nvarchar(12), List5020 bigint, ListName5020 nvarchar(12), List5021 bigint, ListName5021 nvarchar(12), List5022 bigint, ListName5022 nvarchar(12), List5023 bigint, ListName5023 nvarchar(12), List5024 bigint, ListName5024 nvarchar(12), DialoutPBX bigint, DialoutPBXTime bigint, WebChatCount bigint, WebChatTime bigint, WebCallBackCount bigint, WebCallBackTime bigint, WebEmailCount bigint, WebEmailTime bigint, WebEcreatorCount bigint, WebEcreatorTime bigint, WebBrowserCount bigint, WebBrowserTime bigint, WebOtherCount bigint, WebOtherTime bigint, XferList1 bigint, XferListName1 nvarchar(12), XferList2 bigint, XferListName2 nvarchar(12), XferList3 bigint, XferListName3 nvarchar(12), XferList4 bigint, XferListName4 nvarchar(12), XferList5 bigint, XferListName5 nvarchar(12), XferList6 bigint, XferListName6 nvarchar(12), XferList7 bigint, XferListName7 nvarchar(12), XferList8 bigint, XferListName8 nvarchar(12), XferList9 bigint, XferListName9 nvarchar(12), XferList10 bigint, XferListName10 nvarchar(12), XferList11 bigint, XferListName11 nvarchar(12), XferList12 bigint, XferListName12 nvarchar(12), AcctGroup bigint, PatchPBX bigint, PatchPBXTime bigint, AlphaPages bigint, RemotePrints bigint, OncallList bigint, OncallListName nvarchar(12), TotalConfTime bigint, TotalConfNum bigint, TotalConfPartTime bigint, TotalConfPartNum bigint, TTY bigint, TTYOp bigint, TTYNoOp bigint) INSERT INTO @AllStats (Account, Billing, Client, SecNoOp, SecOp, CheckNoOp, CheckOp, PatchNoOp, PatchOp, NonLiveNoOp, NonLiveOp, SecNoOpTime, SecOpTime, CheckNoOpTime, CheckOpTime, PatchNoOpTime, PatchOpTime, NonLiveNoOpTime, NonLiveOpTime, AnswerTime, HoldTime, CallsHeld, CheckNoMsg, PrcntCheckNoMsg, PrcntHeld, AvgHoldTime, AvgAnswerTime, SecTalkTime, CheckTalkTime, NonLiveTalkTime, SecHoldTime, CheckHoldTime, NonLiveHoldTime, SecDiscTime, CheckDiscTime, NonLiveDiscTime, OpAssigned, OpAnswered, OpAbandoned, Special, "Text", Voice, DataOut, DataIn, List0, ListName0, List1, ListName1, List2, ListName2, List3, ListName3, List4, ListName4, List5, ListName5, List6, ListName6, List7, ListName7, List8, ListName8, List9, ListName9, List10, ListName10, List11, ListName11, List12, ListName12, List13, ListName13, DataOutTime, DataInTime, SecMU, VMMU, DialoutNoOp, DialoutOp, DialoutNoOpTime, DialoutOpTime, Busies, PacketCount, SuperTime, NumberAccounts, List5013, ListName5013, List5014, ListName5014, List5015, ListName5015, List5016, ListName5016, List5017, ListName5017, List5018, ListName5018, List5019, ListName5019, List5020, ListName5020, List5021, ListName5021, List5022, ListName5022, List5023, ListName5023, List5024, ListName5024, DialoutPBX, DialoutPBXTime, WebChatCount, WebChatTime, WebCallBackCount, WebCallBackTime, WebEmailCount, WebEmailTime, WebEcreatorCount, WebEcreatorTime, WebBrowserCount, WebBrowserTime, WebOtherCount, WebOtherTime, XferList1, XferListName1, XferList2, XferListName2, XferList3, XferListName3, XferList4, XferListName4, XferList5, XferListName5, XferList6, XferListName6, XferList7, XferListName7, XferList8, XferListName8, XferList9, XferListName9, XferList10, XferListName10, XferList11, XferListName11, XferList12, XferListName12, AcctGroup, PatchPBX, PatchPBXTime, AlphaPages, RemotePrints, OncallList, OncallListName, TotalConfTime, TotalConfNum, TotalConfPartTime, TotalConfPartNum, TTY, TTYOp, TTYNoOp) -- Join results SELECT 0 as Account, 0 as Billing, 'All Accounts' as Client, ISNULL(SUM(SecNoOp), 0) as SecNoOp, ISNULL(SUM(SecOp), 0) as SecOp, ISNULL(SUM(CheckNoOp), 0) as CheckNoOp, ISNULL(SUM(CheckOp),0) as CheckOp, ISNULL(SUM(PatchNoOp), 0) as PatchNoOp, ISNULL(SUM(PatchOp), 0) as PatchOp, ISNULL(SUM(NonLiveNoOp), 0) as NonLiveNoOp, ISNULL(SUM(NonLiveOp), 0) as NonLiveOp, --Time fields ISNULL(SUM(SecNoOpTime),0) as SecNoOpTime, ISNULL(SUM(SecOpTime),0) as SecOpTime, ISNULL(SUM(CheckNoOpTime),0) as CheckNoOpTime, ISNULL(SUM(CheckOpTime),0) as CheckOpTime, ISNULL(SUM(PatchNoOpTime),0) as PatchNoOpTime, ISNULL(SUM(PatchOpTime),0) as PatchOpTime, ISNULL(SUM(NonLiveNoOpTime),0) as NonLiveNoOpTime, ISNULL(SUM(NonLiveOpTime),0) as NonLiveOpTime, ISNULL(SUM(AnswerTime),0) as AnswerTime, ISNULL(SUM(HoldTime),0) as HoldTime, ISNULL(SUM(CallsHeld),0) as CallsHeld, ISNULL(SUM(CheckNoMsg),0) as CheckNoMsg, CASE (SUM(PrcntCheckNoMsg)) WHEN 0 THEN .000 ELSE (ISNULL(SUM(CheckNoMsg),0) / SUM(PrcntCheckNoMsg)) END AS PrcntCheckNoMsg, CASE (SUM(PrcntHeld)) WHEN 0 THEN .000 ELSE (ISNULL(SUM(CallsHeld),0) / SUM(PrcntHeld)) END AS PrcntHeld, CASE (ISNULL(SUM(CallsHeld),0)) WHEN 0 THEN 0 ELSE (ISNULL(SUM(HoldTime),0) / ISNULL(SUM(CallsHeld),0)) END AS AvgHoldTime, CASE (ISNULL(SUM(OpAnswered),0)) WHEN 0 THEN 0 ELSE (ISNULL(SUM(AnswerTime),0) / ISNULL(SUM(OpAnswered),0)) END AS AvgAnswerTime, ISNULL(SUM(SecTalkTime),0) as SecTalkTime, ISNULL(SUM(CheckTalkTime),0) as CheckTalkTime, ISNULL(SUM(NonLiveTalkTime),0) as NonLiveTalkTime, ISNULL(SUM(SecHoldTime),0) as SecHoldTime, ISNULL(SUM(CheckHoldTime),0) as CheckHoldTime, ISNULL(SUM(NonLiveHoldTime),0) as NonLiveHoldTime, ISNULL(SUM(SecDiscTime),0) as SecDiscTime, ISNULL(SUM(CheckDiscTime),0) as CheckDiscTime, ISNULL(SUM(NonLiveDiscTime),0) as NonLiveDiscTime, --More counts ISNULL(SUM(OpAssigned),0) as OpAssigned, ISNULL(SUM(OpAnswered),0) as OpAnswered, ISNULL(SUM(OpAbandoned),0) as OpAbandoned, ISNULL(SUM(Special),0) as Special, ISNULL(SUM("Text"),0) as "Text", ISNULL(SUM(Voice),0) as Voice, --Data Counts ISNULL(SUM(DataOut),0) as DataOut, ISNULL(SUM(DataIn),0) as DataIn, --Dial Lists ISNULL(SUM(List0),0) as List0, ' ' as ListName0, ISNULL(SUM(List1),0) as List1, ' ' as ListName1, ISNULL(SUM(List2),0) as List2, ' ' as ListName2, ISNULL(SUM(List3),0) as List3, ' ' as ListName3, ISNULL(SUM(List4),0) as List4, ' ' as ListName4, ISNULL(SUM(List5),0) as List5, ' ' as ListName5, ISNULL(SUM(List6),0) as List6, ' ' as ListName6, ISNULL(SUM(List7),0) as List7, ' ' as ListName7, ISNULL(SUM(List8),0) as List8, ' ' as ListName8, ISNULL(SUM(List9),0) as List9, ' ' as ListName9, ISNULL(SUM(List10),0) as List10, ' ' as ListName10, ISNULL(SUM(List11),0) as List11, ' ' as ListName11, ISNULL(SUM(List12),0) as List12, ' ' as ListName12, ISNULL(SUM(List13),0) as List13, ' ' as ListName13, --Data Time Values ISNULL(SUM(DataOutTime),0) as DataOutTime, ISNULL(SUM(DataInTime), 0) as DataInTime, --Message Units ISNULL(SUM(SecMU), 0) as SecMU, ISNULL(SUM(VMMU), 0) as VMMU, --Dialout Counts and Time Values ISNULL(SUM(DialoutNoOp), 0) as DialoutNoOp, ISNULL(SUM(DialoutOp), 0) as DialoutOp, ISNULL(SUM(DialoutNoOpTime), 0) as DialoutNoOpTime, ISNULL(SUM(DialoutOpTime), 0) as DialoutOpTime, --Various Counts and Time Values ISNULL(SUM(Busies), 0) as Busies, ISNULL(SUM(PacketCount), 0) as PacketCount, ISNULL(SUM(SuperTime), 0) as SuperTime, ISNULL(COUNT(Account), 0) as NumberAccounts, -- Extended Dial List ISNULL(SUM(List5013), 0) as List5013, ' ' as ListName5013, ISNULL(SUM(List5014), 0) as List5014, ' ' as ListName5014, ISNULL(SUM(List5015), 0) as List5015, ' ' as ListName5015, ISNULL(SUM(List5016), 0) as List5016, ' ' as ListName5016, ISNULL(SUM(List5017), 0) as List5017, ' ' as ListName5017, ISNULL(SUM(List5018), 0) as List5018, ' ' as ListName5018, ISNULL(SUM(List5019), 0) as List5019, ' ' as ListName5019, ISNULL(SUM(List5020), 0) as List5020, ' ' as ListName5020, ISNULL(SUM(List5021), 0) as List5021, ' ' as ListName5021, ISNULL(SUM(List5022), 0) as List5022, ' ' as ListName5022, ISNULL(SUM(List5023), 0) as List5023, ' ' as ListName5023, ISNULL(SUM(List5024), 0) as List5024, ' ' as ListName5024, --PBX Dialouts ISNULL(SUM(DialoutPBX), 0) as DialoutPBX, ISNULL(SUM(DialoutPBXTime), 0) as DialoutPBXTime, --Web stats ISNULL(SUM(WebChatCount), 0) as WebChatCount, ISNULL(SUM(WebChatTime), 0) as WebChatTime, ISNULL(SUM(WebCallBackCount), 0) as WebCallBackCount, ISNULL(SUM(WebCallBackTime), 0) as WebCallBackTime, ISNULL(SUM(WebEmailCount), 0) as WebEmailCount, ISNULL(SUM(WebEmailTime), 0) as WebEmailTime, ISNULL(SUM(WebEcreatorCount), 0) as WebEcreatorCount, ISNULL(SUM(WebEcreatorTime), 0) as WebEcreatorTime, ISNULL(SUM(WebBrowserCount), 0) as WebBrowserCount, ISNULL(SUM(WebBrowserTime), 0) as WebBrowserTime, ISNULL(SUM(WebOtherCount), 0) as WebOtherCount, ISNULL(SUM(WebOtherTime), 0) as WebOtherTime, --Xfer lists ISNULL(SUM(XferList1), 0) as XferList1, ' ' as XferListName1, ISNULL(SUM(XferList2), 0) as XferList2, ' ' as XferListName2, ISNULL(SUM(XferList3), 0) as XferList3, ' ' as XferListName3, ISNULL(SUM(XferList4), 0) as XferList4, ' ' as XferListName4, ISNULL(SUM(XferList5), 0) as XferList5, ' ' as XferListName5, ISNULL(SUM(XferList6), 0) as XferList6, ' ' as XferListName6, ISNULL(SUM(XferList7), 0) as XferList7, ' ' as XferListName7, ISNULL(SUM(XferList8), 0) as XferList8, ' ' as XferListName8, ISNULL(SUM(XferList9), 0) as XferList9, ' ' as XferListName9, ISNULL(SUM(XferList10), 0) as XferList10, ' ' as XferListName10, ISNULL(SUM(XferList11), 0) as XferList11, ' ' as XferListName11, ISNULL(SUM(XferList12), 0) as XferList12, ' ' as XferListName12, --AcctGroup count ISNULL(SUM(AcctGroup), 0) as AcctGroup, --PBX Patches ISNULL(SUM(PatchPBX), 0) as PatchPBX, ISNULL(SUM(PatchPBXTime), 0) as PatchPBXTime, --Various ISNULL(SUM(AlphaPages), 0) as AlphaPages, ISNULL(SUM(RemotePrints), 0) as RemotePrints, ISNULL(SUM(OncallList), 0) as OncallList, ' ' as OncallListName, --Conference stats ISNULL(SUM(TotalConfTime), 0) as TotalConfTime, ISNULL(SUM(TotalConfNum), 0) as TotalConfNum, ISNULL(SUM(TotalConfPartTime), 0) as TotalConfPartTime, ISNULL(SUM(TotalConfPartNum), 0) as TotalConfPartNum, --TTY stats ISNULL(SUM(TTY), 0) as TTY, ISNULL(SUM(TTYOp), 0) as TTYOp, ISNULL(SUM(TTYNoOp), 0) as TTYNoOp FROM @Stats SELECT * FROM @AllStats