我一直在以错误的方式解决问题。我研究了数据透视示例
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()...但我不知道如何将一列的字符串值转换为三列并将它们放入。
答案 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语法就可以在这里使用聚合函数。