如何使用Cube、Pivot或Rollup SQL将行转换为列

3

我有一张包含以下信息的表格:

code    score    quality
123     2015      12
123     2016      16    
123     2017      14

我希望展示这样的内容

  code    2015    2016  2017
    123    12      16    14

你能帮我一下吗?谢谢。


感谢使用 SQL Server 2008 R2。 - Ric_hc
1个回答

4

一种方法是使用条件聚合:

select code,
    max(case when score = 2015 then quality end) as [2015],
    max(case when score = 2016 then quality end) as [2016],
    max(case when score = 2017 then quality end) as [2017]
from your_table
group by code;

演示

或者使用 PIVOT

select *
from your_table
pivot (
    max(quality) for score in ([2015],[2016],[2017])
) p;

Demo


1
非常好!非常感谢!对你来说很容易,但对我来说现在很困难。问候。 - Ric_hc
1
只要你学会了,编程就不再难了。语法已经在那里了,如果你有其他问题,只需问一下。但这就是做事的方式。 - Juan Carlos Oropeza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接