我该如何构建这个三级层次结构Query,

时间:2015-02-17 16:10:51

标签: sql sql-server tsql

我有一个场景。

我有sql server表结构,如下所示

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,Name是CEOfffice。 CEOffice是BusinessUnit

对于ID = 95,ParentID为94.对于ID = 94,名称为COFfice,即业务部门

对于ID = 94,其专利ID为40.因此,ID = 40,名称为Corp Fun,即BusinessGroup。

所以,当ID = 51时:

  • BusinessUnit是Inv Rel
  • BusinessDivision是Fin
  • BusinessGroup是Corp Fun

请帮我写这个查询。感谢

1 个答案:

答案 0 :(得分:0)

只有两个联接

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