求某個節點下所有的子節點,但要求保留原節點名稱
阿新 • • 發佈:2018-12-21
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