USP_MKTSEGMENTATIONTESTSEGMENT_GETDATALIST
Returns a list of all test segments in a marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@MINIMUMSEQUENCE | int | IN | |
@MAXIMUMSEQUENCE | int | IN | |
@CURRENCYCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONTESTSEGMENT_GETDATALIST]
(
@SEGMENTATIONID uniqueidentifier,
@MINIMUMSEQUENCE int = null,
@MAXIMUMSEQUENCE int = null,
@CURRENCYCODE tinyint = 0 /* 0 = base, 1 = organization */
)
as
set nocount on;
if @MINIMUMSEQUENCE is null
set @MINIMUMSEQUENCE = 0;
if @MAXIMUMSEQUENCE is null
set @MAXIMUMSEQUENCE = 2147483647;
declare @PACKAGEPERTHOUSANDAMOUNT decimal(15,5) = 1000.0;
select
[MKTSEGMENTATIONTESTSEGMENT].[ID],
[MKTSEGMENTATIONTESTSEGMENT].[SEQUENCE],
dbo.[UFN_MKTSEGMENTATIONTESTSEGMENT_GETNAME]([MKTSEGMENTATIONTESTSEGMENT].[ID]) as [Name],
[SOURCECODE].[SOURCECODE],
[MKTSEGMENTATIONTESTSEGMENT].[SAMPLESIZE],
[MKTSEGMENTATIONTESTSEGMENT].[SAMPLESIZETYPECODE],
[MKTPACKAGE].[NAME] as [PACKAGENAME],
[MKTPACKAGE].[CHANNEL],
(
(case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 0 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST] else [MKTPACKAGE].[UNITCOST] end
when 4 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST]/@PACKAGEPERTHOUSANDAMOUNT else [MKTPACKAGE].[UNITCOST]/@PACKAGEPERTHOUSANDAMOUNT end else 0 end) +
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 0, @CURRENCYCODE) +
-- Add any other package costs using 'Per thousand'
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 4, @CURRENCYCODE)
+
(case [MKTSEGMENT].[SEGMENTTYPECODE]
when 2 then
dbo.[UFN_MKTSEGMENTATIONSEGMENTLIST_GETCOSTPERRECORD2]([MKTSEGMENTATIONSEGMENT].[ID], @CURRENCYCODE) +
-- Add any other package costs using 'Per thousand'
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 4, @CURRENCYCODE)
else 0
end)
) as [COSTPERPIECE],
case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 1 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST] else [MKTPACKAGE].[UNITCOST] end else 0 end +
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 1, @CURRENCYCODE)
as [COSTPERRESPONSE],
[MKTSEGMENTATIONTESTSEGMENT].[RESPONSERATE],
case when @CURRENCYCODE = 1 then [MKTSEGMENTATIONTESTSEGMENT].[GIFTAMOUNT] else [MKTSEGMENTATIONTESTSEGMENT].[GIFTAMOUNT] end as [GIFTAMOUNT],
[MKTSEGMENTATIONSEGMENT].[MARKETINGPLANBRIEFID],
[MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID],
(case when [MKTSEGMENTATIONTESTSEGMENT].[ASKLADDERID] is null then '' else dbo.[UFN_MKTASKLADDER_GETNAME]([MKTSEGMENTATIONTESTSEGMENT].[ASKLADDERID]) end) as [ASKLADDER],
[MKTSEGMENT].[SEGMENTTYPECODE],
-- calculate this segment's share of the package's cost per effort, which is split evenly among all segments in the mailing
-- using this package, and will be rolled up into the segment's fixed cost
(
(case [MKTPACKAGE].[COSTDISTRIBUTIONMETHODCODE]
when 2 then case when @CURRENCYCODE = 1 then [MKTPACKAGE].[ORGANIZATIONUNITCOST] else [MKTPACKAGE].[UNITCOST] end else 0 end +
dbo.[UFN_MKTPACKAGE_GETINSERTCOSTFORDISTRIBUTION2]([MKTPACKAGE].[ID], 2, @CURRENCYCODE))
/
(isnull((select count([SS].[ID]) from dbo.[MKTSEGMENTATIONSEGMENT] as [SS] where [SS].[SEGMENTATIONID] = @SEGMENTATIONID and [SS].[PACKAGEID] = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]), 0) +
(select count([SS].[ID]) from dbo.[MKTSEGMENTATIONTESTSEGMENT] as [STS] inner join dbo.[MKTSEGMENTATIONSEGMENT] as [SS] on [SS].[ID] = [STS].[SEGMENTID] where [SS].[SEGMENTATIONID] = @SEGMENTATIONID and [STS].[PACKAGEID] = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]))
) as [FIXEDCOSTFROMPACKAGE],
[MKTSEGMENTATIONTESTSEGMENT].[FRACTION],
[MKTSEGMENTATION].[BASECURRENCYID],
[CURRENCY].[ISO4217],
[CURRENCY].[DECIMALDIGITS],
[CURRENCY].[CURRENCYSYMBOL],
[CURRENCY].[SYMBOLDISPLAYSETTINGCODE],
[MKTSEGMENTATIONTESTSEGMENT].[TSLONG]
from dbo.[MKTSEGMENTATIONTESTSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
left outer join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
left outer join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]
left outer join dbo.[MKTCONSOLIDATEDQUERYVIEWSPEC] on [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
inner join dbo.[CURRENCY] on [CURRENCY].[ID] = case when @CURRENCYCODE = 1 then dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]() else [MKTSEGMENTATION].[BASECURRENCYID] end
left join dbo.UFN_MKTSOURCECODE_BUILDCODESFORSEGMENTATION(@SEGMENTATIONID, null, 1) SOURCECODE on SOURCECODE.SEGMENTATIONSEGMENTID = [MKTSEGMENTATIONTESTSEGMENT].ID
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [MKTSEGMENTATIONSEGMENT].[SEQUENCE] between @MINIMUMSEQUENCE and @MAXIMUMSEQUENCE
order by [MKTSEGMENTATIONSEGMENT].[SEQUENCE], [MKTSEGMENTATIONTESTSEGMENT].[SEQUENCE]
option (RECOMPILE);
return 0;