SQL pivot(行轉列),unpivot(列轉行)
阿新 • • 發佈:2019-01-07
【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