USP_MKTSEGMENTATION_EXCLUSIONS_SEGMENTOPTIONS
Retrieves effort options and unique record sources for a marketing effort exclusion.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATION_EXCLUSIONS_SEGMENTOPTIONS]
(
@SEGMENTATIONID uniqueidentifier
)
as
set nocount on;
declare @MAILINGTYPECODE tinyint;
declare @HOUSEHOLDINGTYPECODE tinyint;
declare @DONORIDDATATYPE nvarchar(128);
declare @VALIDRECORDTYPES table ([RECORDTYPEID] uniqueidentifier primary key, [RECORDSOURCEID] uniqueidentifier not null);
declare @CONSOLIDATEDRECORDTYPES table ([RECORDTYPEID] uniqueidentifier not null, [QUERYVIEWCATALOGID] uniqueidentifier not null, [FILTERTYPECODE] tinyint);
select
@MAILINGTYPECODE = [MAILINGTYPECODE],
@HOUSEHOLDINGTYPECODE = [HOUSEHOLDINGTYPECODE],
@DONORIDDATATYPE = dbo.[UFN_MKTSEGMENTATIONACTIVATE_GETDONORIDDATATYPE]([ID])
from dbo.[MKTSEGMENTATION]
where [ID] = @SEGMENTATIONID;
if @MAILINGTYPECODE = 0
--Grab all the consolidated list record types that are used in the mailing's segments...
insert into @CONSOLIDATEDRECORDTYPES ([RECORDTYPEID], [QUERYVIEWCATALOGID])
select distinct
[IDSETREGISTER].[RECORDTYPEID],
[MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[MKTSEGMENTSELECTION] on [MKTSEGMENTSELECTION].[SEGMENTID] = [MKTSEGMENT].[ID]
inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENTSELECTION].[SELECTIONID] or [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[RECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID]
inner join dbo.[MKTCONSOLIDATEDQUERYVIEWSPEC] on [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] = [QUERYVIEWCATALOG].[ID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID;
--This procedure needs to only return record types that actually exist in the mailing's segments so that we don't process
--extra exclusions that are not needed. Do not include the consolidated list record type, instead break it out into its
--individual list record types and house file record type.
insert into @VALIDRECORDTYPES ([RECORDTYPEID], [RECORDSOURCEID])
--House file and list segment record types
select [IDSETREGISTER].[RECORDTYPEID], [MKTSEGMENT].[QUERYVIEWCATALOGID]
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
left join dbo.[MKTSEGMENTSELECTION] on [MKTSEGMENTSELECTION].[SEGMENTID] = [MKTSEGMENT].[ID]
inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENTSELECTION].[SELECTIONID] or [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
left join @CONSOLIDATEDRECORDTYPES as [CRT] on [CRT].[RECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID]
where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
and [CRT].[RECORDTYPEID] is null
union
--Consolidated list "house file" record types
select [QUERYVIEWCATALOG].[RECORDTYPEID], [QUERYVIEWCATALOG].[ID]
from @CONSOLIDATEDRECORDTYPES as [CRT]
inner join dbo.[MKTCONSOLIDATEDQUERYVIEWSPEC] on [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] = [CRT].[QUERYVIEWCATALOGID]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTCONSOLIDATEDQUERYVIEWSPEC].[ID]
union
--Consolidated list "list" record types
select [MKTSEGMENTLIST].[IDSETRECORDTYPEID], [MKTLIST].[RECORDSOURCEID]
from @CONSOLIDATEDRECORDTYPES as [CRT]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[CONSOLIDATEDQUERYVIEWID] = [CRT].[QUERYVIEWCATALOGID]
inner join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID];
select
@MAILINGTYPECODE as [MAILINGTYPECODE],
[VRT].[RECORDSOURCEID],
convert(bit, case when dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC]([VRT].[RECORDSOURCEID]) = 1 then 1 else 0 end) as [ISBBEC],
[VRT].[RECORDTYPEID],
@DONORIDDATATYPE as [DONORIDDATATYPE],
@HOUSEHOLDINGTYPECODE as [HOUSEHOLDINGTYPECODE]
from @VALIDRECORDTYPES as [VRT];
return 0;