create table test(Department varchar(50), Positions varchar(50), Members varchar(50)) insert into test values('Dept_A','Assistant_Manager','Employee_A') insert into test values('Dept_A','Manager','Employee_B') insert into test values('Dept_B','Assistant_Manager','Employee_C') insert into test values('Dept_B','Manager','Employee_D') insert into test values('Dept_B','Manager','Employee_E') insert into test values('Dept_C','Manager','Employee_F') insert into test values('Dept_C','Senior_Manager','Employee_G') insert into test values('Dept_C','Senior_Manager','Employee_H') insert into test values('Dept_C','Senior_Manager','Employee_I') ;with cte as( SELECT Department,Positions, STUFF( (SELECT DISTINCT ',' + Members FROM test WHERE [Department] = a.[Department] AND Positions = a.Positions FOR XML PATH ('')) , 1, 1, '') AS Members FROM test AS a GROUP BY Department,Positions ) SELECT Department, [Assistant_Manager], [Manager], [Senior_Manager] FROM (SELECT Department, Positions,Members FROM cte) AS SourceTable PIVOT ( Max(Members) FOR Positions IN ([Assistant_Manager], [Manager], [Senior_Manager]) ) AS PivotTable;
↧
XML Path 3 Levels
↧