sql 服务器数据透视字符串从一列到三列

sql server pivot string from one column to three columns

我可能一直在以错误的方式解决问题。我研究了数据透视示例

http://www.codeproject.com/Tips/500811/Simple-Way-To-Use-Pivot-In-SQL-Query How to create a pivot query in sql server without aggregate function

但它们不是我正在寻找的类型.. 或者我可能以错误的方式处理这个问题,我是 sql 服务器的新手。

我要改造:

学生:

studid | firstname | lastname | school 
-----------------------------------------
1          mike         lee       harvard 
1          mike         lee       ucdavis
1          mike         lee       sfsu 
2          peter        pan       chico
2          peter        pan       ulloa
3          peter        smith     ucb            

期望输出:(学校注意,最多只需要 3 列)

studid| firstname | lastname   | school1  | school2 | school3
---------------------------------------------------------------------
1       mike        lee           Harvard   ucdavis   sfsu  
2       peter       pan           chico     ulloa
3       peter       smith         ucb

我看到的教程展示了 Sum() 、 count() 的用法......但我不知道如何将一列的字符串值转换为三列。

您可以通过为每个枢轴值取 max(school) 来获得您想要的结果。我猜你想要的枢轴值是按学生划分的学校排名。这将是查询:

select * from
(select *, rank() over (partition by studid order by school) rank from student) r
pivot (max(school) for rank in ([1],[2],[3])) pv

请注意,max 实际上并没有做任何事情。如果您将其替换为 min,查询将 return 得到相同的结果。只是 pivot 语法需要在这里使用聚合函数。