with reg as
(
select id,name,upperId from region where id=2
union all
select r.id,r.name,r.upperId from reg
inner join region r on reg.id = r.upperId
)
select * from reg
(
select id,name,upperId from region where id=2
union all
select r.id,r.name,r.upperId from reg
inner join region r on reg.id = r.upperId
)
select * from reg
------项目实例
WITH MDS_Hr_OrgEach ( objid1 )
AS ( SELECT objid AS 'objid1'
FROM dbo.MDS_Hr_Organization
WHERE objid = '50100001'
AND ObjType = 'o'
AND Deleted = 0
UNION ALL
SELECT o.objid1
FROM MDS_Hr_OrgEach o2
INNER JOIN MDS_Hr_ObjRelation o ON o.ObjID2 = o2.objid1
AND o.Deleted = 0
WHERE o.ObjType2 = 'o'
AND o.ObjType1 = 'o'
)
select * from MDS_Hr_OrgEach