UFN_MKTSEGMENTATIONEXPORTPROCESS_GETSEGMENTATIONPACKAGELISTFOREXPORTDEFINITION

Returns a comma-delimited list of the packages associated with a particular export definition and a marketing effort export.

Return

Return Type
nvarchar(max)

Parameters

Parameter Parameter Type Mode Description
@EXPORTDEFINITIONID uniqueidentifier IN
@SEGMENTATIONID uniqueidentifier IN
@SEGMENTATIONEXPORTPROCESSID uniqueidentifier IN

Definition

Copy


CREATE function dbo.[UFN_MKTSEGMENTATIONEXPORTPROCESS_GETSEGMENTATIONPACKAGELISTFOREXPORTDEFINITION]
(
  @EXPORTDEFINITIONID uniqueidentifier,
  @SEGMENTATIONID uniqueidentifier,
  @SEGMENTATIONEXPORTPROCESSID uniqueidentifier = null
)
returns nvarchar(max)
as
  begin
    declare @PACKAGES nvarchar(max);
    declare @CHANNELCODE tinyint;

    select @PACKAGES = coalesce(@PACKAGES + ', ', '') + [NAME]
    from (
      -- phone packages, mail and email packages without content: MKTPACKAGE.EXPORTDEFINITIONID

      select distinct [MKTPACKAGE].[NAME]
      from dbo.[MKTSEGMENTATIONSEGMENT] 
      left outer join dbo.[MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] 
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID] 
      left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[SEGMENTID] = [MKTSEGMENT].[ID] 
      inner join dbo.[MKTPACKAGE] on ([MKTSEGMENTATIONSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID] or [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID]) 
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID 
      and ([MKTSEGMENTLIST].[TYPECODE] is null or [MKTSEGMENTLIST].[TYPECODE] <> 1
      and [MKTPACKAGE].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID  

      union

      -- mail packages with content: LETTERCODE.EXPORTDEFINITIONID

      select distinct [MKTPACKAGE].[NAME]
      from dbo.[MKTSEGMENTATIONSEGMENT] 
      left outer join dbo.[MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] 
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID] 
      left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[SEGMENTID] = [MKTSEGMENT].[ID] 
      inner join dbo.[MKTPACKAGE] on ([MKTSEGMENTATIONSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID] or [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID]) 
      inner join dbo.[LETTERCODE] on [LETTERCODE].[ID] = [MKTPACKAGE].[LETTERCODEID] 
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID 
      and ([MKTSEGMENTLIST].[TYPECODE] is null or [MKTSEGMENTLIST].[TYPECODE] <> 1
      and [LETTERCODE].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID

      union

      -- email packages with content: MKTPACKAGE.NETCOMMUNITYDATASOURCEID

      select distinct [MKTPACKAGE].[NAME]
      from dbo.[MKTSEGMENTATIONSEGMENT] 
      left outer join dbo.[MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID] 
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID] 
      left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[SEGMENTID] = [MKTSEGMENT].[ID] 
      inner join dbo.[MKTPACKAGE] on ([MKTSEGMENTATIONSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID] or [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID]) 
      inner join dbo.[MKTEXPORTDEFINITION] as [EMAILEXPORTDEFINITION] on ([EMAILEXPORTDEFINITION].[NETCOMMUNITYDATASOURCEID] = [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] and [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] > 0
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID 
      and ([MKTSEGMENTLIST].[TYPECODE] is null or [MKTSEGMENTLIST].[TYPECODE] <> 1
      and [EMAILEXPORTDEFINITION].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID
    ) as [TEMP];

    if @SEGMENTATIONEXPORTPROCESSID is not null and
       (exists (select top 1 1 from dbo.[MKTSEGMENTATIONEXPORTPROCESS] where [ID] = @SEGMENTATIONEXPORTPROCESSID and [MAILEXPORTDEFINITIONID] = @EXPORTDEFINITIONID) or
        exists (select top 1 1 from dbo.[MKTSEGMENTATIONEXPORTPROCESS] where [ID] = @SEGMENTATIONEXPORTPROCESSID and [EMAILEXPORTDEFINITIONID] = @EXPORTDEFINITIONID) or
        exists (select top 1 1 from dbo.[MKTSEGMENTATIONEXPORTPROCESS] where [ID] = @SEGMENTATIONEXPORTPROCESSID and [PHONEEXPORTDEFINITIONID] = @EXPORTDEFINITIONID))
      -- tack on any packages associated with this export definition by virtue of the default setting for the export

      begin
        if len(@PACKAGES) = 0 set @PACKAGES = null;

        if exists (select top 1 1 from dbo.[MKTSEGMENTATIONEXPORTPROCESS] where [ID] = @SEGMENTATIONEXPORTPROCESSID and [MAILEXPORTDEFINITIONID] = @EXPORTDEFINITIONID)
          set @CHANNELCODE = 0;
        else if exists (select top 1 1 from dbo.[MKTSEGMENTATIONEXPORTPROCESS] where [ID] = @SEGMENTATIONEXPORTPROCESSID and [EMAILEXPORTDEFINITIONID] = @EXPORTDEFINITIONID)
          set @CHANNELCODE = 1;
        else if exists (select top 1 1 from dbo.[MKTSEGMENTATIONEXPORTPROCESS] where [ID] = @SEGMENTATIONEXPORTPROCESSID and [PHONEEXPORTDEFINITIONID] = @EXPORTDEFINITIONID)
          set @CHANNELCODE = 2;

        select @PACKAGES = coalesce(@PACKAGES + ', ', '') + [NAME]
          from (select distinct [MKTPACKAGE].[NAME]
                  from dbo.[MKTSEGMENTATIONSEGMENT]
                    left join dbo.[MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
                    inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
                    left outer join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[SEGMENTID] = [MKTSEGMENT].[ID]
                    inner join dbo.[MKTPACKAGE] on ([MKTSEGMENTATIONSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID] or [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID] = [MKTPACKAGE].[ID])
                  where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID
                    and [MKTPACKAGE].[CHANNELCODE] = @CHANNELCODE and ([MKTPACKAGE].[LETTERCODEID] is null and [MKTPACKAGE].[NETCOMMUNITYDATASOURCEID] = 0 and [MKTPACKAGE].[EXPORTDEFINITIONID] is null)
                    and ([MKTSEGMENTLIST].[TYPECODE] is null or [MKTSEGMENTLIST].[TYPECODE] <> 1)) as [TEMP];
      end;

    return @PACKAGES;
  end;