一道sql笔试题

来源:百度知道 编辑:UC知道 时间:2024/05/07 15:24:28
姓名 课程 成绩
张三 语文 100
张三 数学 60
张三 英语 80
李四 语文 90
李四 数学 70
李四 英语 80
将其变成
姓名 语文 数学 英语
这种形式输出,用sql语句实现

select 姓名,
sum(case when 课程='语文' then 成绩 end) 语文,
sum(case when 课程='数学' then 成绩 end) 数学,
sum(case when 课程='英语' then 成绩 end) 英语
from cjb
group by 姓名

例如有下表 tb
name kecheng chengji
张三 语文 98
张三 数学 78
张三 英语 99
李四 语文 85
李四 数学 72
李四 英语 80

SQL语句如下:
select
a.name as '姓名',
sum(case a.kecheng when '语文' then a.chengji else 0 end ) as '语文',
sum(case a.kecheng when '数学' then a.chengji else 0 end ) as '数学',
sum(case a.kecheng when '英语' then a.chengji else 0 end ) as '英语'
from tb as a
group by a.name

结果:
姓名 语文 数学 英语
李四 85 72 80
张三 98 78 99

这个很简单的 我总结了一下 你看看资料
一模一样 你照搬过来就行了