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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM