我有一个CTE(公用表表达式),它根据级别返回员工层次结构 但我需要在一行中使用层次结构
Level employeeNumber employeeName managernumber
0 1287 Me 789
1 789 My Boss 345
2 345 His Boss 123
....
10 3 bla 000
我需要将其显示为
Level0 Level1 Level2 ... Level10, EmployeeNumber, EmployeeName
Me My Boss His Boss 1287 Me
可以用枢轴完成吗?似乎枢轴需要一个聚合函数
这是查询,
SELECT
[0], [1], [2], [3], [4],[5],[6],[7],[8],[9],[10]
FROM
(select [Level], EmployeeNumber,EmployeeName, ManagerNumber from dbo.GetEmployeeHierachy(MYID)) AS SourceTable
PIVOT
(
Max(EmployeeName)
FOR [Level] IN ([0], [1], [2], [3], [4],[5],[6],[7],[8],[9],[10])
) AS PivotTable;
但它会返回此
谢谢,差不多现在我得到了这个
0 1 2 .....
NULL NULL His Boss
NULL NULL NULL
NULL NULL NULL
ME NULL NULL
NULL My Boss NULL
NULL NULL NULL
....
应该是
我的老板他的老板......
答案 0 :(得分:0)
好我的错误
我正在使用很多列进行分组
SELECT * FROM
(select [Level],EmployeeName from dbo.GetEmployeeHierachy(MYID)) AS SourceTable
PIVOT
(
Max(EmployeeName) FOR [Level] IN ([0], [1], [2], [3], [4],[5],[6],[7],[8],[9],[10])
) AS PivotTable;