求某个节点下所有的子节点,但要求保留原节点名称

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yenange/article/details/83999570
USE tempdb
GO
--测试数据
if not object_id(N'Employee') is null
    drop table Employee
Go
Create table Employee([EId] nvarchar(23),[Name] nvarchar(23),[Sex] nvarchar(21),[Depart] int)
Insert Employee
select N'001',N'臧三',N'男',103 union all
select N'002',N'雄起',N'男',103 union all
select N'003',N'冠益乳',N'女',103 union all
select N'004',N'但是',N'男',104 union all
select N'005',N'热风',N'男',104 union all
select N'006',N'裤脚',N'男',105 union all
select N'007',N'是多少',N'女',105 union all
select N'008',N'出纳',N'女',106 union all
select N'009',N'删除',N'男',107 union all
select N'010',N'但是',N'男',107
GO
if not object_id(N'Orgnazation') is null
    drop table Orgnazation
Go
Create table Orgnazation([Id] int,[OrgName] nvarchar(24),[ParentId] int)
Insert Orgnazation
select 100,N'M公司',null union all
select 101,N'管理中心',100 union all
select 102,N'业务中心',100 union all
select 103,N'财务部',100 union all
select 104,N'人事部',101 union all
select 105,N'技术部',101 union all
select 106,N'销售1部',102 union all
select 107,N'销售2部',102
Go
--测试数据结束
;
WITH cte AS (
    SELECT Orgnazation.ID,
           Orgnazation.ID AS OID
    FROM   Orgnazation WHERE id=100
    UNION ALL
    SELECT Orgnazation.ID,
           OID
    FROM   dbo.Orgnazation
        JOIN cte
                ON  cte.ID = Orgnazation.ParentId
)
SELECT * FROM cte

猜你喜欢

转载自blog.csdn.net/yenange/article/details/83999570