USP_MKTSEGMENTWHITEMAILREFRESH_GETCALCULATIONS
Returns response and gift calculations for a white mail segment.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTWHITEMAILREFRESH_GETCALCULATIONS]
(
@SEGMENTID uniqueidentifier,
@ASOFDATE datetime = null
)
as
set nocount on;
declare @RECORDSOURCEID uniqueidentifier;
declare @GIFTIDSETREGISTERID uniqueidentifier;
declare @RESPONDERS int;
declare @RESPONSES int;
declare @GIFTAMOUNT money;
declare @ORGANIZATIONGIFTAMOUNT money;
declare @SQL nvarchar(max);
set @RESPONDERS = 0;
set @RESPONSES = 0;
set @GIFTAMOUNT = 0;
set @ORGANIZATIONGIFTAMOUNT = 0;
select
@RECORDSOURCEID = [MKTSEGMENT].[QUERYVIEWCATALOGID],
@GIFTIDSETREGISTERID = [MKTSEGMENTWHITEMAILREFRESHPROCESS].[GIFTIDSETREGISTERID]
from dbo.[MKTSEGMENTWHITEMAIL]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTWHITEMAIL].[ID]
inner join dbo.[MKTSEGMENTWHITEMAILREFRESHPROCESS] on [MKTSEGMENTWHITEMAILREFRESHPROCESS].[SEGMENTID] = [MKTSEGMENTWHITEMAIL].[ID]
where [MKTSEGMENTWHITEMAIL].[ID] = @SEGMENTID;
set @SQL = 'select' + char(13) +
' @RESPONDERS = count(distinct([GIFTIDSET].[DONORID])),' + char(13) +
' @RESPONSES = count([GIFTIDSET].[DONORID]),' + char(13) +
' @GIFTAMOUNT = isnull(sum([GIFTIDSET].[AMOUNT]), 0),' + char(13) +
' @ORGANIZATIONGIFTAMOUNT = isnull(sum([GIFTIDSET].[ORGANIZATIONAMOUNT]), 0)' + char(13) +
'from dbo.' + dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME](@GIFTIDSETREGISTERID) + ' as [GIFTIDSET]';
if @ASOFDATE is not null
begin
set @SQL = @SQL + char(13) + 'where [GIFTIDSET].[DATE] <= @ASOFDATE';
exec sp_executesql @SQL, N'@ASOFDATE datetime, @RESPONDERS int output, @RESPONSES int output, @GIFTAMOUNT money output, @ORGANIZATIONGIFTAMOUNT money output', @ASOFDATE = @ASOFDATE, @RESPONDERS = @RESPONDERS output, @RESPONSES = @RESPONSES output, @GIFTAMOUNT = @GIFTAMOUNT output, @ORGANIZATIONGIFTAMOUNT = @ORGANIZATIONGIFTAMOUNT output;
end
else
exec sp_executesql @SQL, N'@RESPONDERS int output, @RESPONSES int output, @GIFTAMOUNT money output, @ORGANIZATIONGIFTAMOUNT money output', @RESPONDERS = @RESPONDERS output, @RESPONSES = @RESPONSES output, @GIFTAMOUNT = @GIFTAMOUNT output, @ORGANIZATIONGIFTAMOUNT = @ORGANIZATIONGIFTAMOUNT output;
select
@RESPONDERS as [RESPONDERS],
@RESPONSES as [RESPONSES],
@GIFTAMOUNT as [TOTALGIFTAMOUNT],
@ORGANIZATIONGIFTAMOUNT as [ORGANIZATIONTOTALGIFTAMOUNT],
case when @RESPONSES > 0 then (@GIFTAMOUNT / @RESPONSES) else 0 end as [AVERAGEGIFTAMOUNT],
case when @RESPONSES > 0 then (@ORGANIZATIONGIFTAMOUNT / @RESPONSES) else 0 end as [ORGANIZATIONAVERAGEGIFTAMOUNT];
--declare @SPWRAP table ([RESPONDERS] integer, [RESPONSES] integer, [TOTALGIFTAMOUNT] money, [ORGANIZATIONTOTALGIFTAMOUNT] money, [AVERAGEGIFTAMOUNT] money, [ORGANIZATIONAVERAGEGIFTAMOUNT] money);
--select * from @SPWRAP;
return 0;