Sql 以水平方式显示来自CTE的层次结构信息
我用SQl编写了CTE,它返回如下所述的层次结构信息:- Ecode Name RoleID ImmediateSupervisor 21441 Dharm 1 20479 20479 Sri 2 21567 21567 Ram 3 21111 21111 Anand 4 21134 21134 Raghu 5 Null 20182 Subbu 4 21134 21465 Deepak 4 21134 21131 Ajay 3 21465 31234 Kalyan 1 21131 21141 Hemanth 1 20479 25478 Mahesh 1 21567 45698 Laxman 1 20182 Ecode名称RoleID立即监督 21441达拉姆120479 20479斯里兰卡221567 21567随机存取存储器32111 21111 Anand 4 21134 21134 Raghu 5空 20182 Subbu 4 21134 21465迪帕克4 21134 21131 Ajay 3 21465 31234 Kalyan 121131 21141赫曼1 20479 25478 Mahesh 121567 45698拉克斯曼1 20182 我希望在水平方向上以分层方式显示结果,如下所示:- RoleID-> 5 4 3 2 1 Raghu Anand Ram Mahesh Raghu Anand Ram Sri Dharm Raghu Anand Ram Sri Hemanth Raghu Subbu Laxman Raghu Deepak Ajay Kalyan RoleID->5 4 3 2 1 Raghu Anand Ram Mahesh Raghu Anand Ram Sri Dharm Raghu Anand Ram Sri Hemanth 拉古苏布拉克斯曼酒店 Raghu Deepak Ajay Kalyan 因此,它按照RoleID以水平方式显示层次结构信息。 如果有任何跳过,则RoleID列将为空。例如,您可以看到Laxman(RoleID-1)正在向Subbu(RoleID-4)报告。没有其他用户位于laxman和Subbu之间,因此结果中的空格是第3列和第2列的Sql 以水平方式显示来自CTE的层次结构信息,sql,sql-server-2008,Sql,Sql Server 2008,我用SQl编写了CTE,它返回如下所述的层次结构信息:- Ecode Name RoleID ImmediateSupervisor 21441 Dharm 1 20479 20479 Sri 2 21567 21567
请帮助我如何在SQl中实现这一点。您可以将查询编写为:
select
T1.Name as [1],
case 2
when T2.RoleID then T2.Name
when T3.RoleID then T3.Name
when T4.RoleID then T4.Name
when T5.RoleID then T5.Name
else null end as [2] ,
case 3
when T2.RoleID then T2.Name
when T3.RoleID then T3.Name
when T4.RoleID then T4.Name
when T5.RoleID then T5.Name
else null end as [3] ,
case 4
when T2.RoleID then T2.Name
when T3.RoleID then T3.Name
when T4.RoleID then T4.Name
when T5.RoleID then T5.Name
else null end as [4] ,
case 5
when T2.RoleID then T2.Name
when T3.RoleID then T3.Name
when T4.RoleID then T4.Name
when T5.RoleID then T5.Name
else null end as [5]
from table1 T1
left join table1 T2 on T1.ImmediateSupervisor = T2.Ecode
left join table1 T3 on T2.ImmediateSupervisor = T3.Ecode
left join table1 T4 on T3.ImmediateSupervisor = T4.Ecode
left join table1 T5 on T4.ImmediateSupervisor = T5.Ecode
where T1.RoleID = 1
希望这有帮助