八:也可以分组后 , 对每行数据进行求和 , 使用 SUM 函数 , 语句和结果如下:SELECT student_name,SUM(IF(COURSE = 'Linux',SCORE,0)) 'Linux',SUM(IF(COURSE = 'MySQL',SCORE,0)) 'MySQL',SUM(IF(COURSE = 'Java',SCORE,0)) 'Java'FROM tb_lemon_gradeGROUP BY student_name;
文章插图
九:既然使用 IF 语句可以达到效果 , 那使用 CASE 语句也是同样的效果分组 , 使用 MAX 聚合函数
SELECT student_name,max(CASE COURSE when 'Linux' THEN SCORE ELSE 0 END) as 'Linux',max(CASE COURSE when 'MySQL' THEN SCORE ELSE 0 END) as 'MySQL',max(CASE COURSE when 'Java' THEN SCORE ELSE 0 END) as 'Java'FROM tb_lemon_gradeGROUP BY student_name;
结果如下图所示:文章插图
使用 SUM , 结果如下图所示
SELECT student_name,SUM(CASE COURSE when 'Linux' THEN SCORE ELSE 0 END) as 'Linux',SUM(CASE COURSE when 'MySQL' THEN SCORE ELSE 0 END) as 'MySQL',SUM(CASE COURSE when 'Java' THEN SCORE ELSE 0 END) as 'Java'FROM tb_lemon_gradeGROUP BY student_name;
文章插图
总结通过上面一步一步的分解 , 我们就完成了一个行转列的 SQL 语句编写 , 现在问题又来了 , 这种方式虽然能达到效果 , 但是如果课程多了 ,
比如还有英语、数学、物理等等课程 , 是不是写起来就笔记麻烦了?有没有动态的方式 , 不管有多少课程 , 通过 SQL 就能一步到位呢?感兴趣大家可以去尝试下 。
p s:小编个人收集啦许多软测资料 , 希望能够帮到学软件测试的朋友们软件资料分享包括但不限于:Java自动化测试、Python自动化测试、性能测试、web测试、App测试 测试开发工具包:appuim安装包、fiddler安装包(也有配套视频教程)、eclipse、git、jmeter、loadrunner、monkey、postman、soapul、Xmind等等
有需要的朋友可以私信小编“测试”领取
文章插图
【SQL 经典面试题 - 行列转换】
推荐阅读
- 暴力破解美团最新JVM面试题:无限执行
- 启动电脑,发现桌面空白没有图标怎么办?系统桌面没图标解决方法
- dedecms织梦SQL调用文章并获取静态地址的方法
- 平面广告设计应该学什么
- 白鹿原小说中的经典语录
- 荞麦红茶,荞麦茶的功效与作用荞麦面条做法
- 如何修改WordPress后台的登录界面?
- 手把手教你分析解决MySQL死锁问题
- JavaScript面向对象—继承的实现
- SQL如何删除重复数据