sqlserver递归查询数据

查询所有的:select Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName from BusinessUnit

--查询某一节点的所有子节点

with cte(Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName)
as
(
select Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName from BusinessUnit where Name='会员管理与服务部'
union all
select b.Name,b.BusinessUnitId,b.ParentBusinessUnitId,b.ParentBusinessUnitIdName
from cte A ,BusinessUnit B where B.ParentBusinessUnitId = A.BusinessUnitId and A.ParentBusinessUnitId <>B.BusinessUnitId
)
select Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName
from cte
OPTION(MAXRECURSION 0)

--查询某一节点的所有父节点
with cte (Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName)
as
(
select Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName from BusinessUnit where Name='会员管理与服务部'
union all
select b.Name,b.BusinessUnitId,b.ParentBusinessUnitId,b.ParentBusinessUnitIdName
from cte A ,BusinessUnit B where a.ParentBusinessUnitId = b.BusinessUnitId and a.ParentBusinessUnitId <> a.BusinessUnitId
)
select Name,BusinessUnitId,ParentBusinessUnitId,ParentBusinessUnitIdName
from cte
OPTION(MAXRECURSION 0)
原文地址:https://www.cnblogs.com/jamin/p/2762488.html