USP_MKTSEGMENTATION_GETUNRESOLVEDRESPONSECOUNTS

Returns actual unresolved (white mail) performance measures for an activated mailing.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_MKTSEGMENTATION_GETUNRESOLVEDRESPONSECOUNTS
(
  @SEGMENTATIONID uniqueidentifier
)
as
  set nocount on;

  declare @RECORDSOURCEID uniqueidentifier;
  declare @TOTALRESPONDERS int;
  declare @TOTALRESPONSES int;
  declare @TOTALGIFTAMOUNT money;
  declare @RESPONDERS int;
  declare @RESPONSES int;
  declare @GIFTAMOUNT money;
  declare @SQL nvarchar(max);
  declare @PARAMDEF nvarchar(255);
  declare @GIFTIDSETID uniqueidentifier;
  declare @ORGANIZATIONGIFTAMOUNT money;
  declare @ORGANIZATIONTOTALGIFTAMOUNT money;

  set @TOTALRESPONDERS = 0;
  set @TOTALRESPONSES = 0;
  set @TOTALGIFTAMOUNT = 0;
  set @ORGANIZATIONTOTALGIFTAMOUNT = 0;

  set @PARAMDEF = '@RESPONDERS int output, ' +
                  '@RESPONSES int output, ' +
                  '@GIFTAMOUNT money output, ' +
                  '@ORGANIZATIONGIFTAMOUNT 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
      @GIFTIDSETID = [UNRESOLVEDGIFTIDSETREGISTERID]
    from dbo.[MKTSEGMENTATIONACTIVATE]
    where [SEGMENTATIONID] = @SEGMENTATIONID
    and [RECORDSOURCEID] = @RECORDSOURCEID;

    /* Build the SQL statement for this record source */
    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](@GIFTIDSETID) + ' as [GIFTIDSET]';

    /* Execute the SQL to get the counts/amounts for this record source */
    exec sp_executesql @SQL, @PARAMDEF
      @RESPONDERS = @RESPONDERS output
      @RESPONSES = @RESPONSES output
      @GIFTAMOUNT = @GIFTAMOUNT output,
      @ORGANIZATIONGIFTAMOUNT = @ORGANIZATIONGIFTAMOUNT output;

    /* Keep the running totals for all record sources */
    set @TOTALRESPONDERS = @TOTALRESPONDERS + @RESPONDERS;
    set @TOTALRESPONSES = @TOTALRESPONSES + @RESPONSES;
    set @TOTALGIFTAMOUNT = @TOTALGIFTAMOUNT + @GIFTAMOUNT;
    set @ORGANIZATIONTOTALGIFTAMOUNT = @ORGANIZATIONTOTALGIFTAMOUNT + @ORGANIZATIONGIFTAMOUNT;

    fetch next from RECORDSOURCECURSOR into @RECORDSOURCEID;
  end;

  close RECORDSOURCECURSOR;
  deallocate RECORDSOURCECURSOR;

  /* Return the values */
  select
    @TOTALRESPONDERS as [RESPONDERS],
    @TOTALRESPONSES as [RESPONSES],
    @TOTALGIFTAMOUNT as [TOTALGIFTAMOUNT],
    (case when @TOTALRESPONSES = 0 then 0 else (@TOTALGIFTAMOUNT / cast(@TOTALRESPONSES as money)) end) as [AVERAGEGIFTAMOUNT],
    @ORGANIZATIONTOTALGIFTAMOUNT as [ORGANIZATIONTOTALGIFTAMOUNT],
    (case when @TOTALRESPONSES = 0 then 0 else (@ORGANIZATIONTOTALGIFTAMOUNT / cast(@TOTALRESPONSES as money)) end) as [ORGANIZATIONAVERAGEGIFTAMOUNT];

  return 0;