USP_MKTMEMBERSHIPMAILING_GETRESPONSECOUNTS
Returns actual performance measures for an activated membership renewal effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTMEMBERSHIPMAILING_GETRESPONSECOUNTS]
(
@SEGMENTATIONID uniqueidentifier,
@ASOFDATE datetime = null
)
as
set nocount on;
declare @RECORDSOURCEID uniqueidentifier;
declare @DATATABLE nvarchar(255);
declare @GIFTIDSETNAME nvarchar(255);
declare @ACTIONCODEFIELDNAME nvarchar(255);
declare @ISBBEC bit;
declare @SQL nvarchar(max);
declare @PARAMDEF nvarchar(255);
declare @RENEWALS int;
declare @UPGRADES int;
declare @DOWNGRADES int;
declare @RENEWALAMOUNT money;
declare @TOTALRENEWALS int;
declare @TOTALUPGRADES int;
declare @TOTALDOWNGRADES int;
declare @TOTALRENEWALAMOUNT money;
declare @ORGANIZATIONRENEWALAMOUNT money;
declare @ORGANIZATIONTOTALRENEWALAMOUNT money;
set @TOTALRENEWALS = 0;
set @TOTALUPGRADES = 0;
set @TOTALDOWNGRADES = 0;
set @TOTALRENEWALAMOUNT = 0;
set @ORGANIZATIONTOTALRENEWALAMOUNT = 0;
set @PARAMDEF = '@ASOFDATE datetime, ' +
'@RENEWALS int output, ' +
'@UPGRADES int output, ' +
'@DOWNGRADES int output, ' +
'@RENEWALAMOUNT money output, ' +
'@ORGANIZATIONRENEWALAMOUNT money output';
declare RECORDSOURCECURSOR cursor local fast_forward for
select
[QUERYVIEWCATALOGID]
from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID);
open RECORDSOURCECURSOR;
fetch next from RECORDSOURCECURSOR into @RECORDSOURCEID;
while (@@FETCH_STATUS = 0)
begin
-- gather some info so we can build the SQL for each record source
select
@GIFTIDSETNAME = dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME]([NORMALGIFTIDSETREGISTERID]),
@ISBBEC = dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC](@RECORDSOURCEID)
from dbo.[MKTSEGMENTATIONACTIVATE]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [RECORDSOURCEID] = @RECORDSOURCEID;
if @ISBBEC = 1
set @ACTIONCODEFIELDNAME = '[MEMBERSHIPTRANSACTION].[ACTIONCODE]';
else
set @ACTIONCODEFIELDNAME = '[TODO]';
-- build the SQL statement for this record source
set @SQL = 'select' + char(13) +
' @RENEWALS = isnull(sum(case when isnull(' + @ACTIONCODEFIELDNAME + ', 255) in (1, 2, 3) then 1 else 0 end), 0),' + char(13) +
' @UPGRADES = isnull(sum(case when isnull(' + @ACTIONCODEFIELDNAME + ', 255) = 2 then 1 else 0 end), 0),' + char(13) +
' @DOWNGRADES = isnull(sum(case when isnull(' + @ACTIONCODEFIELDNAME + ', 255) = 3 then 1 else 0 end), 0),' + char(13) +
' @RENEWALAMOUNT = isnull(sum(case when isnull(' + @ACTIONCODEFIELDNAME + ', 255) in (1, 2, 3) then [GIFTIDSET].[AMOUNT] else 0 end), 0),' + char(13) +
' @ORGANIZATIONRENEWALAMOUNT = isnull(sum(case when isnull(' + @ACTIONCODEFIELDNAME + ', 255) in (1, 2, 3) then [GIFTIDSET].[ORGANIZATIONAMOUNT] else 0 end), 0)';
-- join to the activated data table
set @SQL = @SQL + 'from dbo.' + @GIFTIDSETNAME + ' as [GIFTIDSET]' + char(13);
if @ISBBEC = 1
set @SQL = @SQL + 'left outer join dbo.[FINANCIALTRANSACTIONLINEITEM] on [FINANCIALTRANSACTIONLINEITEM].[FINANCIALTRANSACTIONID] = [GIFTIDSET].[ID]' + char(13) +
'left outer join dbo.[MEMBERSHIPTRANSACTION] on [MEMBERSHIPTRANSACTION].[REVENUESPLITID] = [FINANCIALTRANSACTIONLINEITEM].[ID]' + char(13);
else
set @SQL = @SQL + 'TODO';
if @ASOFDATE is not null
set @SQL = @SQL + char(13) + 'where [GIFTIDSET].[DATE] <= @ASOFDATE';
/* Execute the SQL to get the counts/amounts for this record source */
exec sp_executesql @SQL, @PARAMDEF,
@ASOFDATE = @ASOFDATE,
@RENEWALS = @RENEWALS output,
@UPGRADES = @UPGRADES output,
@DOWNGRADES = @DOWNGRADES output,
@RENEWALAMOUNT = @RENEWALAMOUNT output,
@ORGANIZATIONRENEWALAMOUNT = @RENEWALAMOUNT output;
/* Keep the running totals for all record sources */
set @TOTALRENEWALS = @TOTALRENEWALS + @RENEWALS;
set @TOTALUPGRADES = @TOTALUPGRADES + @UPGRADES;
set @TOTALDOWNGRADES = @TOTALDOWNGRADES + @DOWNGRADES;
set @TOTALRENEWALAMOUNT = @TOTALRENEWALAMOUNT + @RENEWALAMOUNT;
set @ORGANIZATIONTOTALRENEWALAMOUNT = @ORGANIZATIONTOTALRENEWALAMOUNT + @ORGANIZATIONRENEWALAMOUNT;
fetch next from RECORDSOURCECURSOR into @RECORDSOURCEID;
end;
close RECORDSOURCECURSOR;
deallocate RECORDSOURCECURSOR;
-- return the values
select
@TOTALRENEWALS as [RENEWALS],
@TOTALUPGRADES as [UPGRADES],
@TOTALDOWNGRADES as [DOWNGRADES],
@TOTALRENEWALAMOUNT as [TOTALRENEWALAMOUNT],
@ORGANIZATIONTOTALRENEWALAMOUNT as [ORGANIZATIONTOTALRENEWALAMOUNT];
return 0;