spConditionBlockConditionCombinationStats

Parameters

Parameter Parameter Type Mode Description
@EmailID int IN
@CBCCombination xml IN

Definition

Copy

CREATE PROCEDURE [dbo].[spConditionBlockConditionCombinationStats]
(
    @EmailID        int,
    @CBCCombination XML
)
AS
BEGIN
    -- Get the stats for all the email jobs related to this
    -- conditional content ConditionBlockCondition node path
    -- in the specified email.

    CREATE TABLE #EmailJobs
    (
        [ID] int NOT NULL
    )

    INSERT INTO #EmailJobs
        SELECT
            *
        FROM [dbo].[fnEmailJobsHavingConditionBlockConditionCombination](@EmailID, @CBCCombination)

    declare @EmailClickThroughs table
    (
        [EMAILJOBID] int NOT NULL,
        [CLICKTHROUGHS] int
    )

    insert into @EmailClickThroughs
    select
    EJR.[EmailJobID] As [EmailJobID],
    Count(s.[StatsID]) As [Clickthroughs]
    from #EmailJobs EJ
    inner join dbo.emailjob REALEJ on EJ.ID = REALEJ.ID
    inner join dbo.EmailJob_Recipient EJR on EJR.EmailJobID = EJ.ID    
    inner join dbo.Stats S on EJR.ID =  S.EmailJobRecipientID    
    inner join dbo.EmailLink EL on (EL.PID = S.PageID OR S.URL = EL.URL OR S.DocumentId = EL.DocumentID) and EL.EmailID = REALEJ.Emailid
    group by ejr.EmailJobID      

    SELECT
        Sum(ejs.[Sent])    AS [Sent],
        Sum(ejs.[Opened])  AS [Opened],
        Sum(ejs.[Bounced]) AS [Bounced],
        Sum(ISNULL(ejc.[Clickthroughs], 0))                   AS [Clickthroughs],
        Sum(ISNULL(ejds.[DonationTransactionsCount], 0))      AS [DonationTransactionsCount],
        Sum(ISNULL(ejes.[EventTransactionsCount], 0))         AS [EventTransactionsCount],
        Sum(ISNULL(ejms.[MembershipTransactionsCount], 0))    AS [MembershipTransactionsCount],
        Sum(ISNULL(ejps.[ProfileUpdateTransactionsCount], 0)) AS [ProfileUpdateTransactionsCount],
        Sum(ISNULL(ejss.[SignupTransactionsCount], 0))        AS [SignupTransactionsCount],
        Sum(ISNULL(ejvs.[VolunteerTransactionsCount], 0))     AS [VolunteerTransactionsCount]
    FROM
        #EmailJobs ej
    INNER JOIN [dbo].[vwEmailJobStats] ejs
        ON ej.[ID] = ejs.[EmailJobID]
    LEFT OUTER JOIN @EmailClickThroughs ejc
        ON ej.[ID] = ejc.[EmailJobID]
    LEFT OUTER JOIN [dbo].[vwEmailJobDonationStats] ejds
        ON ej.[ID] = ejds.[EmailJobID]
    LEFT OUTER JOIN [dbo].[vwEmailJobEventStats] ejes
        ON ej.[ID] = ejes.[EmailJobID]
    LEFT OUTER JOIN [dbo].[vwEmailJobMembershipStats] ejms
        ON ej.[ID] = ejms.[EmailJobID]
    LEFT OUTER JOIN [dbo].[vwEmailJobProfileUpdateStats] ejps
        ON ej.[ID] = ejps.[EmailJobID]
    LEFT OUTER JOIN [dbo].[vwEmailJobSignupStats] ejss
        ON ej.[ID] = ejss.[EmailJobID]
    LEFT OUTER JOIN [dbo].[vwEmailJobVolunteerStats] ejvs
        ON ej.[ID] = ejvs.[EmailJobID]

    --------------------------------
    -- Amount columns
    --------------------------------

    SELECT
        [GiftCurrencyType],
        Sum([GiftAmount]) As [GiftAmountTotal]
    FROM
        (
            SELECT
                [GiftCurrencyType],
                [GiftAmount]
            FROM
                [dbo].[DonationTransactions] dt
            INNER JOIN [dbo].[EmailJob_Recipient] ejr
                ON dt.[EmailJobRecipientID] = ejr.[ID]
            INNER JOIN #EmailJobs ej
                ON ejr.[EmailJobID] = ej.[ID]
            where dt.isdeleted = 0 and dt.[status] = 1

            UNION ALL

            SELECT
                [GiftCurrencyType],
                [GiftAmount]
            FROM
                [dbo].[EventTransactions] et
            INNER JOIN [dbo].[EmailJob_Recipient] ejr
                ON et.[EmailJobRecipientID] = ejr.[ID]
            INNER JOIN #EmailJobs ej
                ON ejr.[EmailJobID] = ej.[ID]
            where et.isdeleted = 0 and et.[status] = 1

            UNION ALL

            SELECT
                [GiftCurrencyType],
                [GiftAmount]
            FROM
                [dbo].[MembershipTransactions] mt
            INNER JOIN [dbo].[EmailJob_Recipient] ejr
                ON mt.[EmailJobRecipientID] = ejr.[ID]
            INNER JOIN #EmailJobs ej
                ON ejr.[EmailJobID] = ej.[ID]
            where mt.isdeleted = 0 and mt.[status] = 1                

        ) AS AllGiftTransactionTables
    GROUP BY
        AllGiftTransactionTables.[GiftCurrencyType]

    DROP TABLE #EmailJobs
END