查询结果行转列?
时间:2022-07-22
本文章向大家介绍查询结果行转列?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
需求:查看学生各类课程已获得的总学分。最终效果如下。
场景:数据库的结构中有三张表,学生表,课程表,成绩表。每个课程有着不同的学分,所以需要查学生的成绩中对应的课程。然后SUM求和。
先简单用sql来实现,
SELECT
g.s_num number, s.name name, c.name, SUM(c.credit)
FROM grade g, course c, student s
WHERE g.c_id = c.id AND s.number = g.s_num GROUP BY g.s_num,c.sort;
发现事情并不简单,课程类别显示在行内,那这样一个人的结果就有好几个了。如何只是一对一还可以在java中用map来映射,现在一个人就有好几条结果,无疑给我增加了不少难度。想了很多方法,最后还是想把他换成列。
整理后的sql语句,很明显效果就是我需要的了。
只需要把别名改成英文,就可以在java中一一映射。
SELECT
g.s_num number, s.name name,
SUM(CASE c.sort WHEN '专业支撑课' THEN c.credit END) 专业支撑课,
SUM(CASE c.sort WHEN '公共必修课' THEN c.credit END) 公共必修课,
SUM(CASE c.sort WHEN '集中实践课' THEN c.credit END) 集中实践课,
SUM(CASE c.sort WHEN '素质拓展课' THEN c.credit END) 素质拓展课,
SUM(CASE c.sort WHEN '专业拓展课' THEN c.credit END) 专业拓展课,
SUM(CASE c.sort WHEN '专业核心课' THEN c.credit END) 专业核心课
FROM grade g, course c, student s WHERE g.c_id = c.id AND s.number = g.s_num GROUP BY g.s_num ORDER BY s.claee;
- Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
- git review报错一例
- Nginx采用https加密访问后出现的问题
- 对比git rm和rm的使用区别
- Gerrit日常操作命令收集
- 轻型的ORM类Dapper
- [原创]Gerrit中文乱码问题解决方案分享
- 获奖案例:国航&百度“微笑启航”AI主题航班
- MySQL高可用架构-MMM环境部署记录
- Silverlight之ListBox/Style学习笔记--ListBox版的图片轮换广告
- MySQL高可用架构-MHA环境部署记录
- 分布式监控系统Zabbix-3.0.3-完整安装记录 - 添加shell脚本监控
- Flash/Flex学习笔记(52):使用TweenLite
- 设计一个界面,很简单!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP实现微信提现功能
- PHP实现SMTP邮件的发送实例
- php实现有序数组旋转后寻找最小值办法
- PHP APP微信提现接口代码
- ThinkPHP5 的简单搭建和使用详解
- php中怎么执行linux命令详解
- phpMyAdmin通过密码漏洞留后门文件
- php 调用百度sms来发送短信的实现示例
- MySQL 8.0 新特性:快速加列
- php判断电子邮件是否正确办法
- 用Laravel Sms实现laravel短信验证码的发送的实现
- kubernetes 近期进展 - 1.14-1.19
- Kubernetes 1.19.0——cronjob
- php获取微信openid方法总结
- Laravel 关联模型-关联新增和关联更新的方法