MySQL降龙十八掌,第六掌内容:利涉大川之MySQL索引的使用与优化(附含MySQL8.0隐藏索引),了解详情>>
0

我的帖子

个人中心

设置

  发新话题
现有表A名为 tb1 内容如下:
学号     姓名      科目     分数      年级
1001     张三      语文      60        1年级
1001     张三      数学      30        1年级
1001     张三      英语      90        1年级

1001     张三      语文      66        2年级
1001     张三      数学      30        2年级


1002     李四      语文      70        1年级
1002     李四      数学      80        1年级
1002     李四      英语      50        1年级

1002     李四      语文      70        2年级
1002     李四      数学      80        2年级


1003     王五     语文      100       1年级
1003     王五      数学      90        1年级
1003     王五     英语       70        1年级

1003     王五     语文      100        2年级
1003     王五      数学      90         2年级

………………许多数据

现在请问怎么写SQL语句能够达到如下表B的样式tb2

学号      姓名    1年级总分数       2年级总分数
1001    张三         180                     96
1002    李四         200                     150
1003    王五         260                      190
…………………………………………



先按照年纪group by

然后在用pivot行转列就能得到你的结果。



给你提供一个最简单的思路,既然是一年级和二年级,那就先分开取出一年级和二年级的数据,然后按照学号和姓名group by,然后将两个表连接起来就可以了



行列转换再聚合, 可参考: http://www.cnblogs.com/seusoftware/p/3238022.html



我的51CTO博客

SQL Server MCITP, MVP, MCT, DBA
引用:
原帖由 seusoftware 于 2018-07-09 13:55 发表
行列转换再聚合, 可参考: http://www.cnblogs.com/seusoftware/p/3238022.html
行转列更切合




‹‹ 上一贴:查询求助   |   下一贴:【已解决】请教不通过"SQL Server 配置管理器"设置端 ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com