转换SQL SERVER表

时间:2018-08-30 10:23:43

标签: mysql sql sql-server tsql ssms

我有这张桌子 table with evaluators and evaluatees.

上表的每一行都是两个人之间的关系(第一行:人a评估人b,第二行人a评估人c,依此类推)。

我想把这张桌子变成这样 Wanted Output

因此,每一行将对应一个评估者,每一列将是由他评估的人。 (由于某些评估人员的评估人员比其他评估人员少,因此对于没有那么多评估对象的人,其余的列将为NULL。

非常感谢,希望您能帮助我

1 个答案:

答案 0 :(得分:0)

由于您具有SQL Server标记,因此我将使用row_number()函数进行条件聚合:

select evalutor, 
       max(case when seq = 1 then evalutee end) as evalutee1,
       max(case when seq = 2 then evalutee end) as evalutee2, 
       max(case when seq = 3 then evalutee end) as evalutee3 
from (select t.*, row_number() over (partition by evalutor order by evalutee) as seq
      from table t
     ) t
group by evalutor;