Sql 如何构造此三级层次结构查询,
我有一个设想 我有如下sql server表结构Sql 如何构造此三级层次结构查询,,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个设想 我有如下sql server表结构 ID CodeLevel ParentID Name ----------- ----------- ----------- -------------------------------------------------- 1 1 NULL Company Group 40 2 1
ID CodeLevel ParentID Name
----------- ----------- ----------- --------------------------------------------------
1 1 NULL Company Group
40 2 1 Corp Fun
41 3 40 Fin
45 4 41 Cont
48 4 41 CFO
51 4 41 Inv Rel
52 4 41 CTandC
94 3 40 COffice
95 4 94 CEOffice
我正在寻找一个查询,以获得业务单位,业务部门和业务组。例:CodeLevel=4是所有业务单元
现在,对于ID=95,名称是CEOfffice。CEOffice是一个业务单元
对于ID=95,ParentID为94。对于ID=94,名称为COFfice,即业务部门
对于ID=94,其专利为40。所以,ID=40,名字是Corp-Fun,它是一个商业团体
因此,当ID=51时:
- 业务单位为Inv Rel
- 业务部门是财务部
- 商业团体很有趣
select base.ID, base.Name, div.Name, grp.Nave
from table as base
join table as div
on div.ID = base.parentID
and base.ID = 51
join table as grp
on grp.ID = div.parentID
如果它总是高达3个级别,并且没有更多级别,那么您可以使用from子句将同一个表连接到另外2次,这样您就有了它。如果可以大于3,则需要考虑使用forxml路径或CTE执行层次结构所需的递归查询。向我们展示你的尝试,我们可能会提供帮助。