sql server pivot字符串从一列到三列

时间:2015-01-16 00:25:30

标签: sql-server pivot

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

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 server的新手。

我想改造:

学生:

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()...但我不知道如何将一列的字符串值转换为三列并将它们放入。

1 个答案:

答案 0 :(得分:2)

您可以通过为每个数据透视值取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替换它,查询将返回相同的结果。只需使用pivot语法就可以在这里使用聚合函数。