Quantcast
Channel: CodeSection,代码区,数据库(综合) - CodeSec
Viewing all articles
Browse latest Browse all 6262

数据库学习――横表、纵表转换! 数据库 数据库学习 横表 纵表转换

$
0
0
横表、纵表转换!
数据库中有一张表TableA,有三个列,
Name代表姓名,Course代表学科的名字,Grade代表成绩,有如下的数据:
TableA
Name
Course
Grade
张三
语文
75
张三
数学
80
张三
英语
90
李四
语文
95
李四
数学
55

要求输出如下格式


Name
语文
数学
英语
张三
75
80
90
张三
95
55
0
分析
第一步
select name,
(case Course when '语文' then Grade else 0 end) as 语文 ,
(case Course when '语文' then Grade else 0 end) as 数学,
(case Course when '语文' then Grade else 0 end) as 英语
from TableA

结果为:


Name
语文
数学
英语
张三
75
0
0
张三
0
80
0
张三
0
0
90
李四
95
0
0
李四
0
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
这样子就大功告成了。
另附:
SQL命令中的case…when…then…else…end条件查询(不同于where)用法
case…when…then…else…end,是在from前面,可以改变记录中某字段的值,不能决定是否显示该记录;
where,是在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录。
case…when…then…else…end,可用于对同一记录的多个字段求和,带分支判断。

Viewing all articles
Browse latest Browse all 6262

Trending Articles