SQL Server:非聚合字段上的数据透视 - 员工层次结构

时间:2014-04-17 16:16:35

标签: sql-server pivot

我有一个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   
....

应该是

我的老板他的老板......

1 个答案:

答案 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;