USP_MKTSEGMENTATIONSEGMENT_GETACTIVEOFFERCOUNT
Returns the offer count for a segment in an active marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTID | uniqueidentifier | IN | |
@TESTSEGMENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONSEGMENT_GETACTIVEOFFERCOUNT]
(
@SEGMENTID uniqueidentifier,
@TESTSEGMENTID uniqueidentifier
)
as
set nocount on;
declare @SQL nvarchar(max);
declare @SEGMENTATIONID uniqueidentifier;
declare @MAILINGTYPECODE tinyint;
declare @SEGMENTTYPECODE tinyint;
declare @ISVENDORMANAGED bit;
declare @ISHISTORICAL bit;
declare @HISTORICALQUANTITY integer;
declare @IMPRESSIONCALCULATIONMETHODCODE tinyint;
declare @IMPRESSIONS integer;
declare @EXPOSURESTARTDATE datetime;
declare @EXPOSUREENDDATE datetime;
declare @OFFERS int;
select
@SEGMENTATIONID = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID],
@MAILINGTYPECODE = [MKTSEGMENTATION].[MAILINGTYPECODE],
@SEGMENTTYPECODE = [MKTSEGMENT].[SEGMENTTYPECODE],
@ISVENDORMANAGED = dbo.[UFN_MKTSEGMENT_ISVENDORMANAGEDLIST]([MKTSEGMENTATIONSEGMENT].[SEGMENTID]),
@ISHISTORICAL = [MKTSEGMENT].[ISHISTORICAL],
@HISTORICALQUANTITY = (case when [MKTSEGMENTATIONSEGMENT].[HISTORICALQUANTITY] > 0 then [MKTSEGMENTATIONSEGMENT].[HISTORICALQUANTITY] else [MKTSEGMENT].[HISTORICALQUANTITY] end),
@IMPRESSIONCALCULATIONMETHODCODE = [MKTSEGMENTATIONSEGMENTACTIVE].[IMPRESSIONCALCULATIONMETHODCODE],
@IMPRESSIONS = [MKTSEGMENTATIONSEGMENTACTIVE].[IMPRESSIONS],
@EXPOSURESTARTDATE = [MKTSEGMENTATIONSEGMENT].[EXPOSURESTARTDATE],
@EXPOSUREENDDATE = [MKTSEGMENTATIONSEGMENT].[EXPOSUREENDDATE]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
left join dbo.[MKTSEGMENTATIONSEGMENTACTIVE] on [MKTSEGMENTATIONSEGMENTACTIVE].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTID;
if @MAILINGTYPECODE = 4 --Public media segments
set @OFFERS = dbo.[UFN_MKTSEGMENTATIONPASSIVESEGMENT_GETQUANTITY](@SEGMENTID, 1, @IMPRESSIONCALCULATIONMETHODCODE, @IMPRESSIONS, @EXPOSURESTARTDATE, @EXPOSUREENDDATE);
else if @ISVENDORMANAGED = 1 or (@SEGMENTTYPECODE = 2 and @ISHISTORICAL = 1)
-- vendor managed segments and historical list segments work the same way: get the total offers from the segment and
-- calculate the offers for each test segment, taking into account fractions/percents and distributing any remainders
set @OFFERS = dbo.[UFN_MKTSEGMENTATIONSEGMENTLIST_GETVENDORMANAGEDQUANTITY](@SEGMENTID, @TESTSEGMENTID);
else if @ISHISTORICAL = 1
-- historical house file segments work similarly: get the total offers from the segment and
-- calculate the offers for each test segment, taking into account fractions/percents and distributing any remainders
set @OFFERS = dbo.[UFN_MKTSEGMENTATIONSEGMENT_GETOFFERCOUNT](@SEGMENTID, @TESTSEGMENTID, @HISTORICALQUANTITY);
else
begin
-- standard, revenue, membership, sponsorship
-- get the total active offer count for the segment or test segment...
set @SQL = 'select @OFFERS = count([' + (case @MAILINGTYPECODE when 1 then 'REVENUEID' when 2 then 'MEMBERSHIPID' when 3 then 'SPONSORSHIPID' when 5 then 'REVENUEID' else 'DONORID' end) + '])' + char(13) +
'from dbo.[' + dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME](@SEGMENTATIONID) + ']' + char(13) +
'where [SEGMENTID] = @SEGMENTID' + char(13) +
'and [TESTSEGMENTID] ' + (case when @TESTSEGMENTID is null then 'is null' else '= @TESTSEGMENTID' end) + char(13) +
'and [DONORQUERYVIEWCATALOGID] is not null';
exec sp_executesql @SQL, N'@SEGMENTID uniqueidentifier, @TESTSEGMENTID uniqueidentifier, @OFFERS int output', @SEGMENTID = @SEGMENTID, @TESTSEGMENTID = @TESTSEGMENTID, @OFFERS = @OFFERS output;
end
select @OFFERS as [TOTALOFFERS];
return 0;