CREATE TABLE [dbo].[Org](
[OrgID] [numeric](18, 0) IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[ParentID] [int] NULL,
[OrgType] [int] NULL,
[OrgName] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_ORGANIZATION] PRIMARY KEY CLUSTERED
(
[OrgID] ASC
)
insert into Org values(0,99,'XX大学')
insert into Org values(1,50,'财务科')
insert into Org values(1,50,'教务处')
insert into Org values(3,40,'学院一')
insert into Org values(3,40,'学院二')
insert into Org values(4,30,'XX系一')
insert into Org values(5,30,'AB系')
insert into Org values(6,20,'2020班级')
insert into Org values(7,20,'2021班级')
结果是:
班级名 系名 学院名 科室名 学校名
2020班级 XX系一 学院一 教务处 XX大学
2021班级 AB系 学院二 教务处 XX大学
------解决思路----------------------
下面的sql是一個笨方法,效率不高,但能實現你的結果.
select orgname as '班级',(select orgname from Org where OrgID=a.ParentID)as '系名',
(select b.OrgName from org b where OrgID=(select ParentID from Org where OrgID=a.ParentID)) '学院名',
(select c.orgname from Org c where OrgID=(select b.ParentID from org b where OrgID=(select ParentID from Org where OrgID=a.ParentID))) as '科室名',
(select d.orgname from Org d where OrgID=(select c.ParentID from Org c where OrgID=(select b.ParentID from org b where OrgID=(select ParentID from Org where OrgID=a.ParentID)))) as '学校名'
from Org as a where OrgType=20