spGetAppealListEmailsSummary
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ProjectAppealListID | int | IN | |
@Type | nvarchar(10) | IN |
Definition
Copy
CREATE procedure dbo.spGetAppealListEmailsSummary
@ProjectAppealListID int,
@Type nvarchar(10)
AS
DECLARE @JobData TABLE(ID int, JobID int, Status tinyint, Constituents int, NotAddressed int, OptOut int,InvalidAccount int, InactiveAccount int)
DECLARE @RecipientData TABLE(ID int, Queued int, Sent int, Opened int, DSN int, SPAMCOMPLAINT int)
DECLARE @DonationData TABLE(ID int, Donations int, DonationGiftAmount int)
DECLARE @EventData TABLE(ID int, Events int, EventGiftAmount int)
DECLARE @MembershipData TABLE(ID int, Memberships int, MembershipGiftAmount int)
DECLARE @Types TABLE (ID int)
INSERT INTO @Types SELECT [ID] FROM fnMakeIDsTableFromString(@Type,',')
INSERT INTO @JobData (ID , JobID, Status, Constituents, NotAddressed, OptOut,InvalidAccount,InactiveAccount)
SELECT epale.[ID], j.ID, j.Status, SUM(j.NumberRequested),
SUM(j.NumberAbsentAddress),
SUM(j.NumberOptedOut),
SUM(j.NumberInvalidAccount),
SUM(ISNULL(j.NumberInactiveAccount,0))
FROM EmailJob j inner join Email e on j.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
WHERE (epale.[EmailProjectAppealListID] = @ProjectAppealListID)
AND epale.Deleted = 0 AND EXISTS (SELECT NULL FROM @Types WHERE ID = e.[Type] AND j.ConditionalParentJobID Is Null)
GROUP BY j.ID, j.Status, epale.[ID]
IF EXISTS(SELECT TOP 1 [ID] FROM @JobData)
BEGIN
----RecipientData---------------------------------------------------------------------------------------------------------------------
INSERT INTO @RecipientData (ID, Queued, Sent, Opened, DSN, SPAMCOMPLAINT)
SELECT epale.ID, COUNT(r.EmailAddress), SUM(case r.Sent when 1 then 1 else 0 end),
SUM(case r.Opened when 1 then 1 else 0 end),
SUM(case when r.DSNed =1 and r.RecentDSNCategory <>112 then 1 else 0 end),
SUM(case when r.DSNed =1 and r.RecentDSNCategory =112 then 1 else 0 end)
FROM Email e
INNER JOIN EmailJob j on j.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
LEFT OUTER JOIN EmailJob_Recipient as r on r.EmailJobID = j.ID AND r.[Current] = 1
WHERE (epale.[EmailProjectAppealListID] = @ProjectAppealListID)
AND epale.Deleted = 0
GROUP BY epale.ID
-----DonataData--------------------------------------------------------------------------------------------------------------------
INSERT INTO @DonationData (ID, Donations, DonationGiftAmount)
SELECT epale.[ID],
count(dt.DonationTransactionsID), sum(dt.GiftAmount)
FROM DonationTransactions dt
INNER JOIN Email e on dt.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
WHERE epale.[EmailProjectAppealListID] = @ProjectAppealListID
and dt.isdeleted = 0
and dt.Status = 1
GROUP BY epale.[ID]
-----EventData
--------------------------------------------------------------------------------------------------------------------
INSERT INTO @EventData(ID, Events, EventGiftAmount)
SELECT epale.[ID], count(et.EventTransactionsID), sum(et.GiftAmount)
FROM EventTransactions et
INNER JOIN Email e on et.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
WHERE epale.[EmailProjectAppealListID] = @ProjectAppealListID
and et.isdeleted = 0
and et.Status = 1
GROUP BY epale.[ID]
-----MembershipData--------------------------------------------------------------------------------------------------------------------
INSERT INTO @MembershipData
(ID, Memberships, MembershipGiftAmount)
SELECT epale.[ID], count(mt.ID), sum(mt.GiftAmount)
FROM MembershipTransactions mt
INNER JOIN Email e on mt.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
WHERE epale.[EmailProjectAppealListID] = @ProjectAppealListID
and mt.isdeleted = 0
and mt.Status = 1
GROUP BY epale.[ID]
END
--Pull everything together
SELECT epale.[ID], e.[Name], jd.JobID, jd.Status, e.[type], e.[Subject], e.[FromDisplayName],Constituents, NotAddressed, Sent, (Queued - Sent) as UnSent, Opened,
(ISNULL(EventGiftAmount,0) + ISNULL(MembershipGiftAmount,0) + ISNULL(DonationGiftAmount,0)) as GiftAmount,InvalidAccount, OptOut, DSN ,InactiveAccount, SpamComplaint
FROM @JobData jd
INNER JOIN @RecipientData rd on jd.[ID] = rd.[ID]
LEFT OUTER JOIN @DonationData dd on rd.[ID] = dd.[ID]
LEFT OUTER JOIN @EventData ed on rd.[ID] = ed.[ID]
LEFT OUTER JOIN @MembershipData md on rd.[ID] = md.[ID]
RIGHT OUTER JOIN EmailProjectAppeal_listEmail epale on rd.id = epale.id inner join Email e
on epale.ID = e.ProjectAppealListEmailID
WHERE epale.[EmailProjectAppealListID] = @ProjectAppealListID AND epale.Deleted = 0 AND EXISTS (SELECT NULL FROM @Types WHERE ID = e.[Type])
ORDER BY e.[Type] ASC