纵表与横表互转实例
1.纵表转横表:
纵表结构:Table1
转换后的横表结构:
Sql示例代码:
1
2
3
4
5
6
7
8
9
10
11
|
select username, 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 Table1 group by username |
2、横表转纵表:
横表结构: TableA
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示例代码:
1
2
3
|
SELECT 姓名, '语文' AS 科目,语文 AS 成绩 FROM TableA UNION ALL SELECT 姓名, '数学' AS 科目,数学 AS 成绩 FROM TableA UNION ALL SELECT 姓名, '英语' AS 科目,英语 AS 成绩 FROM TableA ORDER BY 姓名,科目 DESC ; |
case 变量表达式 --对某个‘变量表达式’进行判断
when 值 --当‘变量表达式’是某个‘值’时
then 返回值表达式 --返回‘返回值表达式’值
[when...
then...
.....] --可以进行多次判断
[else 其他情况返回值表达式] --不符合所有when后面的就是其他情况了
end --结束
作者:RichardCui
出处:https://www.cnblogs.com/yachao1120/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-RichardCuiBlog。