UFN_FAFNFGCAMPAIGN_GETALLLEVELS

Return

Return Type
table

Definition

Copy


CREATE function dbo.UFN_FAFNFGCAMPAIGN_GETALLLEVELS()
returns table
as return

    With [All] (LEVELID, HPATH, NFGID)
    As 
    (        
        select NFGL.ID,                 
                NFGL.HIERARCHYPATH.ToString(), 
                NFGL.NFGCAMPAIGNID as NFGID
        FROM dbo.FAFNFGCAMPAIGNLEVEL NFGL (nolock)
        join dbo.FAFNFGCAMPAIGN C (nolock) on C.ID = NFGL.NFGCAMPAIGNID
        join dbo.FAFPROGRAM P (nolock) on P.ID = C.CAMPAIGNID and P.ISACTIVE = 1 
        where NFGL.HIERARCHYPATH.GetAncestor(1).ToString() <> '/'
    ),
    [Children](LEVELID, PARENTLEVELID,  NFGID)
    as
    (
        select   CC.ID,C.LEVELID, C.NFGID
            from dbo.FAFNFGCAMPAIGNLEVEL CC (nolock)
            cross apply [All] C
            where CC.HIERARCHYPATH.IsDescendantOf(C.[HPATH]) = 1
            /*
        select L.ID, A.LEVELID,  NFGID from [All] A
              join dbo.FAFNFGCAMPAIGNLEVEL L (nolock) on L.HIERARCHYPATH.ToString() like '' + A.HPATH + '%' */
    ),
    [Final] 
    As
    (
        select LEVELID as PARENTLEVELID, LEVELID,  NFGID
        from [All

        Union All

        select F.PARENTLEVELID, F.LEVELID,  NFGID
        from [Children] F 
    )
    select distinct F.PARENTLEVELID as ID, F.LEVELID as CHILDID, F.NFGID, FC.CAMPAIGNID from Final F 
    join dbo.FAFNFGCAMPAIGN FC (nolock) on FC.ID = F.NFGID