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