USP_DATALIST_REMOVEMEMBERSCOUNTS
Returns the remove members counts for a marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@STATUSID | uniqueidentifier | IN | Remove members process status ID |
Definition
Copy
CREATE procedure dbo.[USP_DATALIST_REMOVEMEMBERSCOUNTS]
(
@SEGMENTATIONID uniqueidentifier,
@STATUSID uniqueidentifier = null
)
with execute as owner
as
set nocount on;
declare @TEMP table ([NAME] nvarchar(255), [SEGMENT] nvarchar(255), [SOURCECODE] nvarchar(255), [ORIGINAL] int, [DELETED] int, [RESULTING] int);
declare @DATATABLE nvarchar(128);
declare @EXCLTABLE nvarchar(128);
declare @PROCESSDATE datetime;
declare @SEGMENTATIONEXCLUSIONID uniqueidentifier;
if @STATUSID is not null
begin
set @DATATABLE = dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME](@SEGMENTATIONID);
set @EXCLTABLE = dbo.[UFN_MKTSEGMENTATIONACTIVATEEXCLUSION_MAKETABLENAME](@SEGMENTATIONID);
select @SEGMENTATIONEXCLUSIONID = [ID], @PROCESSDATE = [DATEADDED] from dbo.[MKTSEGMENTATIONEXCLUSION] where [STATUSID] = @STATUSID;
declare @SQL nvarchar(4000);
set @SQL =
'with EXCLUSION([SEGMENTID], [SOURCECODE], [DELETED])' + char(13) +
'as' + char(13) +
'(' + char(13) +
' select [SEGMENTID], [SOURCECODE], count(1)' + char(13) +
' from dbo.[' + @EXCLTABLE + ']' + char(13) +
' where [SEGMENTATIONEXCLUSIONID] = @SEGMENTATIONEXCLUSIONID' + char(13) +
' group by [SEGMENTID], [SOURCECODE]' + char(13) +
'),' + char(13) +
'POST([SEGMENTID], [DELETED])' + char(13) +
'as' + char(13) +
'(' + char(13) +
' select [PREV].[SEGMENTID], count(1)' + char(13) +
' from dbo.[' + @EXCLTABLE + '] [PREV]' + char(13) +
' inner join dbo.[MKTSEGMENTATIONEXCLUSION] on [PREV].[SEGMENTATIONEXCLUSIONID] = [MKTSEGMENTATIONEXCLUSION].[ID]' + char(13) +
' where [MKTSEGMENTATIONEXCLUSION].[DATEADDED] > @PROCESSDATE' + char(13) +
' group by [PREV].[SEGMENTID]' + char(13) +
'),' + char(13) +
'DATA([SEGMENTID],[CURRENT])' + char(13) +
'as' + char(13) +
'(' + char(13) +
' select [SEGMENTID], count(1)' + char(13) +
' from dbo.[' + @DATATABLE + '] [DATA] ' + char(13) +
' group by [DATA].[SEGMENTID]' + char(13) +
')' + char(13) +
'select' + char(13) +
' [MKTSEGMENTATION].[NAME],' + char(13) +
' [MKTSEGMENT].[NAME],' + char(13) +
' [EXCLUSION].[SOURCECODE],' + char(13) +
' [EXCLUSION].[DELETED] + isnull([DATA].[CURRENT],0) + isnull([POST].[DELETED],0),' + char(13) +
' [EXCLUSION].[DELETED],' + char(13) +
' isnull([DATA].[CURRENT],0) + isnull([POST].[DELETED],0)' + char(13) +
'from' + char(13) +
' dbo.[MKTSEGMENTATION] ' + char(13) +
' inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]' + char(13) +
' inner join dbo.[MKTSEGMENT] on [MKTSEGMENTATIONSEGMENT].[SEGMENTID] = [MKTSEGMENT].[ID]' + char(13) +
' inner join [EXCLUSION] on [EXCLUSION].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]' + char(13) +
' left join [DATA] on [EXCLUSION].[SEGMENTID] = [DATA].[SEGMENTID]' + char(13) +
' left join [POST] on [EXCLUSION].[SEGMENTID] = [POST].[SEGMENTID]';
insert into @TEMP
exec sp_executesql @SQL, N'@SEGMENTATIONEXCLUSIONID uniqueidentifier, @PROCESSDATE datetime', @SEGMENTATIONEXCLUSIONID = @SEGMENTATIONEXCLUSIONID, @PROCESSDATE = @PROCESSDATE;
end
if exists (select 1 from @TEMP)
select * from @TEMP;
else
select [NAME], null as [SEGMENT], null as [SOURCECODE], null as [ORIGINAL], null as [DELETED], null as [RESULTING] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID;
return 0;