with a as(select ProjectTreeCode,ProjectTreeName,UpCode,0ASlevelfrom LNGT_BIM_ProjectTree where ProjectTreeCode='Q01'unionallselect x.ProjectTreeCode,x.ProjectTreeName,a.UpCode,level+1from LNGT_BIM_ProjectTree x,a
where x.UpCode = a.ProjectTreeCode)select*from a
方式二
with a as(WITH cte AS(SELECTLEVEL=1,
Level1 = cast( ROW_NUMBER ()over(ORDERBY OrderID )ASVARCHAR(50))FROM
ZSJT_BIMCD_Component
UNIONALLSELECTLEVEL= b.LEVEL+1,
Level1 = cast(( b.Level1 +'-'+CONVERT(VARCHAR(50), ROW_NUMBER ()over(ORDERBY a.OrderID )))ASVARCHAR(50))FROM
ZSJT_BIMCD_Component a
INNERJOIN cte b ON a.ParentPartNumber = b.PartNumber
)SELECTLEVELFROM cte ORDERBY Level1