UFN_MKTSEGMENTATIONSEGMENTLIST_GETQUANTITY
Returns the number of records in a marketing effort list segment.
Return
Return Type |
---|
int |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONSEGMENTID | uniqueidentifier | IN | |
@RECEIVEDVIACODE | tinyint | IN |
Definition
Copy
CREATE function dbo.[UFN_MKTSEGMENTATIONSEGMENTLIST_GETQUANTITY]
(
@SEGMENTATIONSEGMENTID uniqueidentifier,
@RECEIVEDVIACODE tinyint = 3 -- both
)
returns integer
as
begin
declare @RENTALQUANTITY integer;
declare @EXCHANGEQUANTITY integer;
declare @QUANTITY integer;
declare @ACTIVE bit;
declare @SAMPLESIZE integer;
declare @SAMPLESIZETYPECODE tinyint;
declare @ISVENDORMANAGED bit;
set @RENTALQUANTITY = 0;
set @EXCHANGEQUANTITY = 0;
select
@ACTIVE = [MKTSEGMENTATION].[ACTIVE],
@SAMPLESIZE = [MKTSEGMENTATIONSEGMENT].[SAMPLESIZE],
@SAMPLESIZETYPECODE = [MKTSEGMENTATIONSEGMENT].[SAMPLESIZETYPECODE],
@ISVENDORMANAGED = dbo.[UFN_MKTSEGMENT_ISVENDORMANAGEDLIST]([MKTSEGMENTATIONSEGMENT].[SEGMENTID])
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;
if @ACTIVE = 0
--For non-activated mailings...
select
@RENTALQUANTITY = (case when isnull([MKTSEGMENTATIONSEGMENTLIST].[OVERRIDEQUANTITIESANDORSEGMENTCOSTS], 0) = 1 then [MKTSEGMENTATIONSEGMENTLIST].[RENTALQUANTITY] else [MKTSEGMENTLIST].[RENTALQUANTITY] end),
@EXCHANGEQUANTITY = (case when isnull([MKTSEGMENTATIONSEGMENTLIST].[OVERRIDEQUANTITIESANDORSEGMENTCOSTS], 0) = 1 then [MKTSEGMENTATIONSEGMENTLIST].[EXCHANGEQUANTITY] else [MKTSEGMENTLIST].[EXCHANGEQUANTITY] end)
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
left join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;
else
--For activated mailings...
select
@RENTALQUANTITY = [MKTSEGMENTATIONSEGMENTLIST].[RENTALQUANTITY],
@EXCHANGEQUANTITY = [MKTSEGMENTATIONSEGMENTLIST].[EXCHANGEQUANTITY]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENTLIST].[SEGMENTLISTID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;
set @QUANTITY = (case @RECEIVEDVIACODE
when 3 then @RENTALQUANTITY + @EXCHANGEQUANTITY
when 1 then @RENTALQUANTITY
when 2 then @EXCHANGEQUANTITY
end);
if @ISVENDORMANAGED = 0 --Only imported lists will have a sample size
begin
if @SAMPLESIZETYPECODE = 0 --Percent
begin
set @QUANTITY = floor(cast(@QUANTITY as decimal(20,5)) * (cast(@SAMPLESIZE as decimal(20,5)) / 100));
end
else --Records
begin
if @QUANTITY > @SAMPLESIZE
set @QUANTITY = @SAMPLESIZE;
end
end
return @QUANTITY;
end