竖表转横表
竖表结构:
Name | Course | Grade |
张三 | 语文 | 75 |
张三 | 数学 | 80 |
张三 | 英语 | 90 |
李四 | 语文 | 95 |
李四 | 数学 | 55 |
转换后横表结构:
Name | 语文 | 数学 | 英语 |
张三 | 75 | 80 | 90 |
李四 | 95 | 55 | 0 |
SQL语句:
1 select Name,2 sum(case Course when '语文' then Grade else 0 end) as 语文,3 sum(case Course when '数学' then Grade else 0 end) as 数学,4 sum(case Course when '英语' then Grade else 0 end) as 英语5 from TableA 6 group by Name
横表转竖表
横表结构:
ID | Name | Chinese | Math | English |
1 | 张三 | 90 | 89 | 80 |
2 | 李四 | 95 | 76 | 38 |
3 | 王五 | 88 | 77 | 67 |
转换后竖表结构:
ID | 姓名 | 科目 | 成绩 |
1 | 张三 | 语文 | 87 |
2 | 张三 | 数学 | 78 |
3 | 张三 | 英语 | 67 |
4 | 李四 | 语文 | 90 |
5 | 李四 | 数学 | 65 |
6 | 李四 | 英语 | 98 |
7 | 王五 | 语文 | 54 |
8 | 王五 | 数学 | 67 |
9 | 王五 | 英语 | 49 |
SQL语句:
1 select Name,'Chinese' as 科目,Chinese as 成绩 from tableb union all2 select Name,'Math' as 科目,Math as 成绩 from tableb union all3 select Name,'English' as 科目,English as 成绩 from tableb4 order by Name,科目 desc