SQL如何将表中的数据从纵向显示转换成横向显示

在网上看到很多人关于这个问题的解答,但笔者都觉得不满意,在此我想给出最简单的答案

表名:成绩表 T_Score

(sno)学号 (KC)课程 (Score)成绩

04105124 会计 85
04105124 英语 80
04105124 微积分 60

04105125 英语 50
04105125 会计 84
04105125 微积分 54

04105126 微积分 40
04105126 英语 80
04105126 会计 60


同一个学号固定的有N条记录,是固定一对多的关系 比如 上面列举的3门课程
值得注意的是数据表中课程的顺序是被打乱的,也就是说不同学号对应的课程顺序都是不一样的
但是对应的内容都是固定的

要求查询结果是这样的

(sno)学号 (WJF)微积分 (YY)英语 (KJ)会计
04105124 60 80 85
04105125 54 50 84
04105126 40 80 60
 

解答:

select sno
,SUM(case kc when '微积分' then Score else 0 end) as 微积分
,SUM(case kc when '英语' then Score else 0 end) as 英语
,SUM(case kc when '会计' then Score else 0 end) as 会计
from T_Score group by sno

这个答案是最简单的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值