USP_DATALIST_CONSTITUENTFILEIMPORTCOUNTS

Returns the segmented house file counts for a marketing effort.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.[USP_DATALIST_CONSTITUENTFILEIMPORTCOUNTS]
(
  @SEGMENTATIONID uniqueidentifier
)
with execute as owner
as
  set nocount on;

  declare @TEMP table ([EFFORTNAME] nvarchar(255), [SEGMENTNAME] nvarchar(255), [SOURCECODE] nvarchar(255), [PACKAGEID] uniqueidentifier, [PACKAGENAME] nvarchar(255), [QUANTITY] int);
  declare @SQL nvarchar(max)
  declare @DATATABLE nvarchar(256);
  declare @EFFORTNAME nvarchar(100);
  declare @ACTIVE bit;

  set @DATATABLE = dbo.[UFN_MKTCONSTITUENTFILEIMPORT_BUILDTABLENAME](@SEGMENTATIONID);
  select @EFFORTNAME = [NAME], @ACTIVE = [ACTIVE] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID;

  if exists(select 1 from INFORMATION_SCHEMA.TABLES where (TABLE_SCHEMA = 'dbo') and (TABLE_NAME = @DATATABLE))
  begin
    set @SQL = 'select' + char(13) +
               '  @EFFORTNAME [EFFORTNAME],' + char(13) +
               '  isnull([MKTSEGMENTATIONTESTSEGMENT].[NAME], [MKTSEGMENT].[NAME]) [SEGMENTNAME],' + char(13) +
               '  [DATA].[SOURCECODE] [SOURCECODE],' + char(13) +
               '  isnull([P2].[ID], [P1].[ID]) [PACKAGEID],' + char(13) +
               '  isnull([P2].[NAME], [P1].[NAME]) [PACKAGENAME],' + char(13) +
               '  count(*) [QUANTITY]' + char(13) +
               'from dbo.[' + @DATATABLE + '] [DATA]' + char(13) +
               'left join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [DATA].[SEGMENTATIONSEGMENTID]' + char(13) +
               'left join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]' + char(13) +
               'left join dbo.[MKTSEGMENTATIONTESTSEGMENT] [MKTSEGMENTATIONTESTSEGMENT] on [MKTSEGMENTATIONTESTSEGMENT].[ID] = [DATA].[SEGMENTATIONTESTSEGMENTID]' + char(13) +
               'left join dbo.[MKTPACKAGE] [P1] on [P1].[ID] = [MKTSEGMENTATIONSEGMENT].[PACKAGEID]' + char(13) +
               'left join dbo.[MKTPACKAGE] [P2] on [P2].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]' + char(13) +
               'group by [MKTSEGMENTATIONTESTSEGMENT].[NAME], [MKTSEGMENT].[NAME], [DATA].[SOURCECODE], [P2].[ID], [P1].[ID], [P2].[NAME], [P1].[NAME];';
    insert into @TEMP
      exec sp_executesql @SQL, N'@EFFORTNAME nvarchar(100), @SEGMENTATIONID uniqueidentifier',@EFFORTNAME = @EFFORTNAME, @SEGMENTATIONID = @SEGMENTATIONID;
  end

  if exists (select 1 from @TEMP)
    select  
      [EFFORTNAME],
      [SEGMENTNAME],
      [SOURCECODE],
      [PACKAGEID],
      [PACKAGENAME],
      [QUANTITY]
    from @TEMP;
  else
    select @EFFORTNAME [EFFORTNAME], null [SEGMENTNAME], null [SOURCECODE], null [PACKAGEID], null [PACKAGETNAME], 0 [QUANTITY]

  return 0;