Hierarchical Queries in SQL Server 2005

前端 未结 5 724
余生分开走
余生分开走 2020-11-29 07:43

Way back when I was working in an Oracle shop I took the CONNECT_BY for granted. Now I\'m stuck working with SQL Server 2005 and have some nasty object hierarchies. Specif

5条回答
  •  臣服心动
    2020-11-29 08:22

    To traverse the Depth of the Hierarchy first then the next sibling level, CTE can be used:

    declare @tempTable TABLE
    (
        ORGUID int,
        ORGNAME nvarchar(100), 
        PARENTORGUID int,
        ORGPATH nvarchar(max)
    )
    
    ;WITH RECORG(ORGuid, ORGNAME, PARENTORGUID, ORGPATH)
    as
    (
        select 
            org.UID,
            org.Name,
            org.ParentOrganizationUID,
            dbo.fGetOrganizationBreadcrumbs(org.UID)
        from Organization org
        where org.UID =1
    
        union all
    
        select 
            orgRec.UID,
            orgRec.Name,
            orgRec.ParentOrganizationUID,
            dbo.fGetOrganizationBreadcrumbs(orgRec.UID) 
        from Organization orgRec
        inner join RECORG recOrg on orgRec.ParentOrganizationUID = recOrg.ORGuid
    
    )
    insert into @tempTable(ORGUID, ORGNAME, PARENTORGUID,ORGPATH)
    
    select ORGUID, ORGNAME, PARENTORGUID,ORGPATH 
    from  RECORG rec 
    
    select * 
    from @tempTable where ORGUID in(select MIN(tt.ORGUID) 
                                    from @tempTable tt 
                                    group by tt.PARENTORGUID)
    

提交回复
热议问题