现把转换方法列举如下:
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;