UFN_MKTSEGMENTATIONSEGMENT_GETSOURCEQUERYVIEWCATALOGID

Returns the ID of the query view from which members of this segment may be retrieved.

Return

Return Type
uniqueidentifier

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONSEGMENTID uniqueidentifier IN

Definition

Copy


CREATE function dbo.[UFN_MKTSEGMENTATIONSEGMENT_GETSOURCEQUERYVIEWCATALOGID]
(
  @SEGMENTATIONSEGMENTID uniqueidentifier
)
returns uniqueidentifier
as
  begin
    declare @SEGMENTID uniqueidentifier;
    declare @QUERYVIEWCATALOGID uniqueidentifier;
    declare @MARKETINGRECORDTYPE tinyint;
    declare @SEGMENTTYPECODE tinyint;

    set @QUERYVIEWCATALOGID = null;

    select
      @SEGMENTID = [MKTSEGMENT].[ID],
      @MARKETINGRECORDTYPE = dbo.[UFN_MKTSEGMENT_GETMARKETINGRECORDTYPE]([MKTSEGMENT].[ID]),
      @SEGMENTTYPECODE = [MKTSEGMENT].[SEGMENTTYPECODE]
    from dbo.[MKTSEGMENTATIONSEGMENT] 
    inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
    where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID;

    if @MARKETINGRECORDTYPE = 1 -- house file

      select
        @QUERYVIEWCATALOGID = case @SEGMENTTYPECODE when 1 then [MKTRECORDSOURCE].[ID]
                                                    when 3 then [MKTGIFTRECORDSOURCE].[QUERYVIEWCATALOGID]
                                                    when 4 then [MKTMEMBERSHIPRECORDSOURCE].[QUERYVIEWCATALOGID]
                                                    when 5 then [MKTSPONSORSHIPRECORDSOURCE].[QUERYVIEWCATALOGID] end
      from dbo.[MKTRECORDSOURCE]
      left outer join dbo.[MKTGIFTRECORDSOURCE] on [MKTGIFTRECORDSOURCE].[ID] = [MKTRECORDSOURCE].[ID]
      left outer join dbo.[MKTMEMBERSHIPRECORDSOURCE] on [MKTMEMBERSHIPRECORDSOURCE].[ID] = [MKTRECORDSOURCE].[ID]
      left outer join dbo.[MKTSPONSORSHIPRECORDSOURCE] on [MKTSPONSORSHIPRECORDSOURCE].[ID] = [MKTRECORDSOURCE].[ID]
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[QUERYVIEWCATALOGID] = [MKTRECORDSOURCE].[ID]
      where [MKTSEGMENT].[ID] = @SEGMENTID

    else if @MARKETINGRECORDTYPE = 2 -- list, public media

      select
        @QUERYVIEWCATALOGID = coalesce([MKTSEGMENTLISTACTIVE].[QUERYVIEWCATALOGID], [MKTSEGMENTLISTINACTIVE].[QUERYVIEWCATALOGID], [MKTSEGMENTLISTPARENTACTIVE].[QUERYVIEWCATALOGID], [MKTSEGMENTLISTPARENTINACTIVE].[QUERYVIEWCATALOGID])
      from dbo.[MKTSEGMENTATIONSEGMENT] 
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
      left outer join dbo.[MKTSEGMENTATIONSEGMENTLIST] on [MKTSEGMENTATIONSEGMENTLIST].[ID] = [MKTSEGMENTATIONSEGMENT].[ID]
      left outer join dbo.[MKTSEGMENTLIST] as [MKTSEGMENTLISTACTIVE] on [MKTSEGMENTLISTACTIVE].[ID] = [MKTSEGMENTATIONSEGMENTLIST].[SEGMENTLISTID]
      left outer join dbo.[MKTSEGMENTLIST] as [MKTSEGMENTLISTPARENTACTIVE] on [MKTSEGMENTLISTPARENTACTIVE].[SEGMENTID] = [MKTSEGMENTLISTACTIVE].[PARENTSEGMENTID]
      -- public media segments have no members and have no rows in MKTSEGMENTLIST; this inner join takes care of them

      inner join dbo.[MKTSEGMENTLIST] as [MKTSEGMENTLISTINACTIVE] on [MKTSEGMENTLISTINACTIVE].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
      left outer join dbo.[MKTSEGMENTLIST] as [MKTSEGMENTLISTPARENTINACTIVE] on [MKTSEGMENTLISTPARENTINACTIVE].[SEGMENTID] = [MKTSEGMENTLISTINACTIVE].[PARENTSEGMENTID]
      where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTATIONSEGMENTID
      and [MKTSEGMENTLISTINACTIVE].[TYPECODE] <> 1  -- vendor managed segments have no members


  else if @MARKETINGRECORDTYPE = 3 -- consolidated

    select
      @QUERYVIEWCATALOGID = dbo.[UFN_MKTRECORDSOURCE_GETCONSOLIDATEDQUERYVIEWID]([MKTSEGMENT].[QUERYVIEWCATALOGID])
    from dbo.[MKTSEGMENT] where [ID] = @SEGMENTID;

  return @QUERYVIEWCATALOGID;
end