SQL SERVER pivot(行转列),unpivot(列转行)
【pivot】行转列:多行变一列
假设学生成绩表Score1
Name | Subject | Score |
小张 | 语文 | 88 |
小花 | 数学 | 89 |
小张 | 数学 | 90 |
Name | 语文 | 数学 |
小花 | null | 89 |
小张 | 88 | 90 |
--一定要有聚合函数, 如sum(Score) select * from Score1 pivot (sum(Score) for Subject in (语文,数学)) b
【unpivot】列转行:一列变多行
假设学生成绩表Score2
Name | Chinese | Math |
小花 | 89 | 93 |
小张 | 90 | 89 |
Name | Subject | Score |
小花 | Chinese | 89 |
小花 | Math | 93 |
小张 | Chinese | 90 |
小张 | Math | 89 |
--Score,Subject 列名自定义,可以是任何想要的名字 Score1,Score2...Subject1,Subject2... select * from Score2 unpivot (Score for Subject in (Chinese,Math)) b