USP_MKTSEGMENTATION_GETOFFERCOUNT
Returns the offer count for a marketing effort or a specific package within a marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@PACKAGEID | uniqueidentifier | IN | |
@FORTESTSEGMENTS | bit | IN | |
@FORACTIVATE | bit | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATION_GETOFFERCOUNT]
(
@SEGMENTATIONID uniqueidentifier,
@PACKAGEID uniqueidentifier = null,
@FORTESTSEGMENTS bit = 0,
@FORACTIVATE bit = 0
)
as
set nocount on;
if @FORTESTSEGMENTS is null
set @FORTESTSEGMENTS = 0;
if @FORACTIVATE is null
set @FORACTIVATE = 0;
if @FORTESTSEGMENTS = 1
--Grab all test segments under each segment where one of the test segments meets the criteria.
--We need all the test segments so we can correctly calculate the number of offers for the parent segment.
select
[MKTSEGMENTATIONTESTSEGMENT].[ID],
[MKTSEGMENTATIONTESTSEGMENT].[SAMPLESIZE],
[MKTSEGMENTATIONTESTSEGMENT].[SAMPLESIZETYPECODE],
[MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID],
[MKTSEGMENTATIONTESTSEGMENT].[RESPONSERATE],
[MKTSEGMENTATIONTESTSEGMENT].[GIFTAMOUNT],
[MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] as [PARENTSEGMENTID],
[MKTSEGMENTATIONSEGMENT].[SEGMENTID] as [MKTSEGMENTID],
cast(null as bit) as [SAMPLESIZEEXCLUDEREMAINDER],
[MKTSEGMENTATIONTESTSEGMENT].[FRACTION],
dbo.[UFN_MKTSEGMENTATIONTESTSEGMENT_GETNAME]([MKTSEGMENTATIONTESTSEGMENT].[ID]) as [NAME],
[IDSETREGISTER].[RECORDTYPEID],
(case when [MKTSEGMENTATIONSEGMENT].[HISTORICALQUANTITY] > 0 then [MKTSEGMENTATIONSEGMENT].[HISTORICALQUANTITY] else [MKTSEGMENT].[HISTORICALQUANTITY] end) as [HISTORICALQUANTITY]
from dbo.[MKTSEGMENTATIONTESTSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
where [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] in (select distinct [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
from dbo.[MKTSEGMENTATIONTESTSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and (@PACKAGEID is null or [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = @PACKAGEID)
and (@FORACTIVATE = 0 or dbo.[UFN_MKTSEGMENT_ISVENDORMANAGEDLIST]([MKTSEGMENT].[ID]) = 0)) --Exclude vendor managed list segments
order by [MKTSEGMENTATIONSEGMENT].[SEQUENCE], [MKTSEGMENTATIONTESTSEGMENT].[SEQUENCE];
else
select
[MKTSEGMENTATIONSEGMENT].[ID],
[MKTSEGMENTATIONSEGMENT].[SAMPLESIZE],
[MKTSEGMENTATIONSEGMENT].[SAMPLESIZETYPECODE],
[MKTSEGMENTATIONSEGMENT].[PACKAGEID],
[MKTSEGMENTATIONSEGMENT].[RESPONSERATE],
[MKTSEGMENTATIONSEGMENT].[GIFTAMOUNT],
cast(null as uniqueidentifier) as [PARENTSEGMENTID],
[MKTSEGMENTATIONSEGMENT].[SEGMENTID] as [MKTSEGMENTID],
[MKTSEGMENTATIONSEGMENT].[SAMPLESIZEEXCLUDEREMAINDER],
cast(null as nvarchar(10)) as [FRACTION],
[MKTSEGMENT].[NAME],
[IDSETREGISTER].[RECORDTYPEID],
(case when [MKTSEGMENTATIONSEGMENT].[HISTORICALQUANTITY] > 0 then [MKTSEGMENTATIONSEGMENT].[HISTORICALQUANTITY] else [MKTSEGMENT].[HISTORICALQUANTITY] end) as [HISTORICALQUANTITY]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
where [SEGMENTATIONID] = @SEGMENTATIONID
and (@PACKAGEID is null or [PACKAGEID] = @PACKAGEID)
and (@FORACTIVATE = 0 or dbo.[UFN_MKTSEGMENT_ISVENDORMANAGEDLIST]([MKTSEGMENT].[ID]) = 0) --Exclude vendor managed list segments
order by [SEQUENCE];
return 0;