存在表score,记录学生的考试成绩,如下图所示:

现要求以 学生姓名,语文,数学,英语 这种格式显示学生成绩,如下图所示

具体步骤如下:

1、首先,使用case when函数输出单个课程的成绩

case when course='语文' then score end as 语文

case when course='数学' then score end as 数学

case when course='英语' then score end as 英语

sql语句:

select name ,case when course='语文' then score end as 语文,

case when course='数学' then score end as 数学,

case when course='英语' then score end as 英语  from score;

输出结果如下图所示:

2、使用group by 和sum,去掉NULL得出课程的成绩

sql语句:

select name ,sum(case when course='语文' then score end) as 语文,
sum(case when course='数学' then score end )as 数学,
sum(case when course='英语' then score end )as 英语
from score group by name;

输出结果如下图所示

就得出行转列的输出结果了

总结:在具体的生活场景中,使用学生姓名,课程1,课程2,课程3……的表结构是不太合理的,比如选修课,不可能每个学生都选一样的课程,这种结构会存在浪费存储空间的情况,比较好的做法就是一行表示一个学生的某个课程的成绩,再使用行转列方法输出想要的成绩结构。

mysql sql语句:行转列问题的更多相关文章

  1. mysql sql语句大全(转载)

      1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...

  2. MYSQL SQL语句技巧初探(一)

    MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and, ...

  3. mysql 中实现行变列

    前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用 ...

  4. MySQL客户端工具的使用与MySQL SQL语句

    MySQL客户端工具的使用 1.MySQL程序的组成 客户端 mysql:CLI交互式客户端程序 mycli:CLI交互式客户端程序;使用sql语句时会有提示信息 mysql_secure_insta ...

  5. sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)

    sql的行转列(PIVOT)与列转行(UNPIVOT)   在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...

  6. MYSQL SQL语句优化

    1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我们要重点关注的数据: type列,连接类型.一个好的SQL语句至少要 ...

  7. 自制小工具大大加速MySQL SQL语句优化(附源码)

    引言 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤.然而这些步骤重复性的执行,又 ...

  8. MySQL - SQL语句优化方法

    1.使用 show status 了解各种 SQL 的执行频率 mysql> show status like 'Com%'; 该命令可以查询 sql 命令的执行次数. 2.定位执行效率较低的 ...

  9. Mysql sql语句技巧与优化

    一.常见sql技巧 1.正则表达式的使用 2.巧用RAND()提取随机行 mysql数据库中有一个随机函数rand()是获取一个0-1之间的数,利用这个函数和order by一起能够吧数据随机排序, ...

随机推荐

  1. android 通过bitmapfactory得到图片真实像素的方法,以及没有得到真实像素的原因

    原文来自:原文地址 由于这个错误导致浪费非常长时间找原因,所以要赶紧记录下来. 过程是这种,在使用android读取图片的时候,就是使用BitmapFactory.decodeResource(thi ...

  2. 【Cocosd2d-x CCMenu菜单之二】

    菜单项CCMenuItem是一个基类. 子类CCMenuItemFont.CCMenuItemLabel.CCMenuItemSprite.CCMenuItemToggle可增加CCMenu中形成菜单 ...

  3. Unmapped Spring configuration files found.

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架后,IDEA弹出如下提示: 2.解决方案: File --> Project Structure --> M ...

  4. Hibernate学习之一级缓存

    © 版权声明:本文为博主原创文章,转载请注明出处 Hibernate缓存: - 缓存是为了降低应用程序对物理数据源访问的频次,从而提供应用程序的运行性能的一种策略 - Hibernate缓存是提升和优 ...

  5. Struts2 后台获取路径的几种方法

    Struts2 后台获取路径的几种方法 package actions.app; import java.io.File; import org.apache.struts2.ServletActio ...

  6. 多媒体开发之---开源库ffmeg的log之子解析

    用了ffmeg快两年了,对其中的log甚是感兴趣,今天在做8148项目是,解读h264结构,看了<毕-新一代视频压缩编码标准h246> ,在第六章中的重排序里面看到了好熟悉的4x4矩阵zi ...

  7. SQL-SQL基础

    SQL(Structured Query Language)是通用的数据库查询语言,各个数据库厂商均对SQL-92标准做了支持,同一时候各家又再次基础上做了相应扩展,比如oracle的PL/SLQ. ...

  8. CentOS 6.4 yum安装LAMP环境

    一.制作连外网的yum源文件 1.  centOS安装完成时是默认存在的,不需要做任何操作,可以直接使用yum 命令进行操作, 默认是在 /etc/yum.repos.d/目录下的 2. 如果你因为制 ...

  9. .net Socket编程

    1.         什么是TCP/IP.UDP?2.         Socket在哪里呢?3.         Socket是什么呢?4.         你会使用它们吗? 什么是TCP/IP.U ...

  10. OKR与KPI管理的区别与联系

    OKR是一种新兴的管理体系,最近几年被引进中国.由于在IT.互联网.金融.游戏等知识密集型企业中有着显著的效果,得到中国企业的认可. OKR是英文Objectives & Key Result ...