現把轉換方法列舉如下:
1、縱表轉橫表:
縱表結構 TableA
Name |
Course |
Grade |
張三 |
語文 |
75 |
張三 |
數學 |
80 |
張三 |
英語 |
90 |
李四 |
語文 |
95 |
李四 |
數學 |
55 |
橫表結構 TableB
Name |
語文 |
數學 |
英語 |
張三 |
75 |
80 |
90 |
李四 |
95 |
55 |
0 |
方法一:
select Name,
sum(case Course when ‘語文‘ then Grade else 0 end) as 語文,
sum(case Course when ‘數學‘ then Grade else 0 end) as 數學,
sum(case Course when ‘英語‘ then Grade else 0 end) as 英語
from TableA
group by Name
2、橫表轉縱表的"SQL"示例
橫表結構: TEST_H2Z
ID 姓名 語文 數學 英語
1 張三 80 90 70
2 李四 90 85 95
3 王五 88 75 90
轉換后的表結構:
ID 姓名 科目 成績
1 張三 語文 80
2 張三 數學 90
3 張三 英語 70
4 李四 語文 90
5 李四 數學 80
6 李四 英語 99
7 王五 語文 85
8 王五 數學 96
9 王五 英語 88
橫表轉縱表SQL示例:
SELECT 姓名,'語文' AS 科目,語文 AS 成績 FROM TEST_H2Z UNION ALL
SELECT 姓名,'數學' AS 科目,數學 AS 成績 FROM TEST_H2Z UNION ALL
SELECT 姓名,'英語' AS 科目,英語 AS 成績 FROM TEST_H2Z
ORDER BY 姓名,科目 DESC;