USP_MKTSEGMENTATION_GETSELECTIONS

Returns all of the segments in use by the marketing effort, and their selections.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTATION_GETSELECTIONS]
(
  @SEGMENTATIONID uniqueidentifier = null
)
as
  set nocount on;

  create table #NOREFRESHSEGMENTIDS ([SEGMENTATIONSEGMENTID] uniqueidentifier) 
  declare @SEGMENTEDHOUSEFILETABLE nvarchar(256);
  declare @SEGMENTEDHOUSEFILEEXISTS bit;
  select @SEGMENTEDHOUSEFILEEXISTS = case when dbo.[UFN_MKTCONSTITUENTFILEIMPORT_IMPORTTABLEEXISTS](@SEGMENTATIONID) = 1 then 1 else 0 end;

  /* Create table of segmentationsegment IDs to exclude from the refresh process (segments that were used in segmented house file import) */
  if @SEGMENTEDHOUSEFILEEXISTS = 1
    begin
      declare @SQL nvarchar(max);
      set @SEGMENTEDHOUSEFILETABLE = dbo.[UFN_MKTCONSTITUENTFILEIMPORT_BUILDTABLENAME](@SEGMENTATIONID);
      set @SQL = 'insert into #NOREFRESHSEGMENTIDS select distinct [SEGMENTATIONSEGMENTID] from dbo.[' + @SEGMENTEDHOUSEFILETABLE + '];'
      exec(@SQL);
    end

  select
    [MKTSEGMENT].[ID] as [SEGMENTID],
    [MKTSEGMENT].[NAME] as [SEGMENTNAME],
    (case when [ADHOCQUERY].[ID] is null then case when [SMARTQUERYINSTANCE].[ID] is null then case when [IDSETREGISTERDYNAMICIDSET].[DYNAMICIDSETREGISTERID] is null then 3 else 4 end else 2 end else 1 end) as [QUERYTYPE],
    coalesce([ADHOCQUERY].[ID], [SMARTQUERYINSTANCE].[ID], [IDSETREGISTERDYNAMICIDSET].[DYNAMICIDSETREGISTERID], [IDSETREGISTER].[ID]) as [QUERYID],
    coalesce([ADHOCQUERY].[NAME], [SMARTQUERYINSTANCE].[NAME], [IDSETREGISTER].[NAME]) as [QUERYNAME],
    [MKTSEGMENTREFRESHPROCESS].[ID] as [PARAMETERSETID],
    1 as [FORCEORDER]
  from dbo.[MKTSEGMENTATIONSEGMENT]
  inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
  inner join dbo.[MKTSEGMENTSELECTION] on [MKTSEGMENTSELECTION].[SEGMENTID] = [MKTSEGMENT].[ID]
  inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENTSELECTION].[SELECTIONID]
  left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
  left join dbo.[MKTSEGMENTREFRESHPROCESS] on [MKTSEGMENTREFRESHPROCESS].[SEGMENTID] = [MKTSEGMENT].[ID]
  left join dbo.[IDSETREGISTERADHOCQUERY] on [IDSETREGISTERADHOCQUERY].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[ADHOCQUERY] on [ADHOCQUERY].[ID] = [IDSETREGISTERADHOCQUERY].[ADHOCQUERYID]
  left join dbo.[IDSETREGISTERSMARTQUERYINSTANCE] on [IDSETREGISTERSMARTQUERYINSTANCE].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[SMARTQUERYINSTANCE] on [SMARTQUERYINSTANCE].[ID] = [IDSETREGISTERSMARTQUERYINSTANCE].[SMARTQUERYINSTANCEID]
  left join dbo.[IDSETREGISTERDYNAMICIDSET] on [IDSETREGISTERDYNAMICIDSET].[STATICIDSETREGISTERID] = [IDSETREGISTER].[ID]
  where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
  and [IDSETREGISTER].[STATIC] = 1
  and ([MKTSEGMENT].[SEGMENTTYPECODE] <> 2 or [MKTSEGMENTLIST].[PARENTSEGMENTID] is not null) -- exclude list segments, but not child list segments

  /* exclude appeal mailing segments */
  and not exists(select 1
                 from dbo.[APPEALMAILING]
                 inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [APPEALMAILING].[MKTSEGMENTATIONSEGMENTID]
                 where [MKTSEGMENTATIONSEGMENT].[SEGMENTID] = [MKTSEGMENT].[ID])
  /* not segmented house file segmented */
  and not exists(select 1
               from #NOREFRESHSEGMENTIDS
               where @SEGMENTEDHOUSEFILEEXISTS = 1 and [#NOREFRESHSEGMENTIDS].[SEGMENTATIONSEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID])

  union all

  select
    convert(uniqueidentifier, '00000000-0000-0000-0000-000000000000') as [SEGMENTID],
    coalesce([ADHOCQUERY].[NAME], [SMARTQUERYINSTANCE].[NAME], [IDSETREGISTER].[NAME]) + ' (' + [MKTSEGMENTATIONFILTERSELECTION].[FILTERTYPE] + ')' as [SEGMENTNAME],
    (case when [ADHOCQUERY].[ID] is null then case when [SMARTQUERYINSTANCE].[ID] is null then case when [IDSETREGISTERDYNAMICIDSET].[DYNAMICIDSETREGISTERID] is null then 3 else 4 end else 2 end else 1 end) as [QUERYTYPE],
    coalesce([ADHOCQUERY].[ID], [SMARTQUERYINSTANCE].[ID], [IDSETREGISTERDYNAMICIDSET].[DYNAMICIDSETREGISTERID], [IDSETREGISTER].[ID]) as [QUERYID],
    coalesce([ADHOCQUERY].[NAME], [SMARTQUERYINSTANCE].[NAME], [IDSETREGISTER].[NAME]) as [QUERYNAME],
    convert(uniqueidentifier, '00000000-0000-0000-0000-000000000000') as [PARAMETERSETID],
    0 as [FORCEORDER]
  from dbo.[MKTSEGMENTATIONFILTERSELECTION]
  inner join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENTATIONFILTERSELECTION].[SELECTIONID]
  left join dbo.[MKTSEGMENTATIONSEGMENTREFRESHPROCESS] on [MKTSEGMENTATIONSEGMENTREFRESHPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATIONFILTERSELECTION].[SEGMENTATIONID]
  left join dbo.[IDSETREGISTERADHOCQUERY] on [IDSETREGISTERADHOCQUERY].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[ADHOCQUERY] on [ADHOCQUERY].[ID] = [IDSETREGISTERADHOCQUERY].[ADHOCQUERYID]
  left join dbo.[IDSETREGISTERSMARTQUERYINSTANCE] on [IDSETREGISTERSMARTQUERYINSTANCE].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
  left join dbo.[SMARTQUERYINSTANCE] on [SMARTQUERYINSTANCE].[ID] = [IDSETREGISTERSMARTQUERYINSTANCE].[SMARTQUERYINSTANCEID]
  left join dbo.[IDSETREGISTERDYNAMICIDSET] on [IDSETREGISTERDYNAMICIDSET].[STATICIDSETREGISTERID] = [IDSETREGISTER].[ID]
  where [MKTSEGMENTATIONFILTERSELECTION].[SEGMENTATIONID] = @SEGMENTATIONID
  and [IDSETREGISTER].[STATIC] = 1

  order by [FORCEORDER], [SEGMENTID];

  return 0;