A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 做只会飞的鱼 中级黑马   /  2013-10-15 00:49  /  1502 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 做只会飞的鱼 于 2013-10-15 19:43 编辑

有一张表s_sco,结构如下:
   姓名   科目   分数  
   张三   语文    90
   张三   数学    85
   张三   英语    80
   李四   语文    88
   李四   数学    80
   李四   英语    93
  怎样用select语句把上表显示成如下结构
   姓名  语文   数学   英语
   张三   90      85     80
   李四   88      80     93

评分

参与人数 1黑马币 +3 收起 理由
李江 + 3 不会...

查看全部评分

4 个回复

倒序浏览
亲,我做了1小时终于整出来了。。。
  1. select name as '姓名',sum(case subject when 'yuwen' then score else 0 end) as '语文',
  2. sum(case subject when 'shuxue' then score else 0 end) as '数学',
  3. sum(case subject when 'yingyu' then score else 0 end) as '英语' from tbl_student group by name;
复制代码
一定用case语句才有用...
我的表结构是
name varhcar(20),subject varcahr(20),score number(5).
你试试这样行不,我这行。。。

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
To 金牌黑马 2013-10-15 18:06:14
藤椅
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
bird_not_fat 发表于 2013-10-15 08:56
亲,我做了1小时终于整出来了。。。一定用case语句才有用...
我的表结构是
name varhcar(20),subject varca ...

谢谢哈~我一直是以多表联合查询的思维去想的.完全错了
回复 使用道具 举报
虽然楼上有答案了 但是还是想把自己的思路分享出来。
使用case when  then语句
select  name as 姓名
max(case kemu  when '语文' then chengji else 0 end ) as 语文,
max(case kemu  when '数学' then chengji else 0 end ) as 数学,
max(case kemu  when '英语' then chengji else 0 end ) as 英语,
from  表名
group by name
else 的意思是 如果成绩没有 则显示为0分 如果不写else 则显示null
最后要以姓名字段进行分组
以上代码 自己可以sql server中建个表格 试一试 加深印象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马