文档章节

24.mysql 实现行转列 及 合并字段显示

Lucky_Me
 Lucky_Me
发布于 2017/07/29 00:55
字数 329
阅读 12
收藏 0

    1. 建表语句

CREATE DATABASE mytest; -- 创建数据库
CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT ,sname VARCHAR(30),course VARCHAR(80),score INT); --  创建学生表
SHOW TABLES -- 查看数据库中有那些表

DESC student -- 查看student表结构

-- 插入学生成绩数据
INSERT INTO  student  VALUES(NULL,'张三','语文',88);
INSERT INTO student(sname,course,score) VALUES ('张三','数学',99);
INSERT INTO student(sname,course,score) VALUES ('张三','物理',100);

INSERT INTO  student  VALUES(NULL,'李四','语文',97);
INSERT INTO student(sname,course,score) VALUES ('李四','数学',56);
INSERT INTO student(sname,course,score) VALUES ('李四','物理',65);

INSERT INTO  student  VALUES(NULL,'小五','语文',98);
INSERT INTO student(sname,course,score) VALUES ('小五','数学',100);
INSERT INTO student(sname,course,score) VALUES ('小五','物理',100);

2.查询学生成绩
SELECT * FROM student -- 查询学生成绩

 

3. 行转列

3.1 效果

3.2 查询语句

-- 行转列
SELECT sname,
    MAX(CASE course WHEN '语文' THEN score  ELSE 0 END) 语文,
    MAX(CASE course WHEN '数学' THEN score  ELSE 0 END) 数学,
    MAX(CASE course WHEN '物理' THEN score  ELSE 0 END) 物理
    FROM student
    GROUP BY sname;

4. 合并字段显示

4.1 效果

4.2 语句

--  合并字段显示    
SELECT
    `sname`,
    GROUP_CONCAT(course, ":", score) AS 成绩
FROM
    student
GROUP BY
    `sname`

© 著作权归作者所有

共有 人打赏支持
Lucky_Me
粉丝 7
博文 191
码字总数 64399
作品 0
美国
k3cloud设置同一单据的单据头字段各行合并显示

要实现此功能,关键有两点: 1. 如何让系统知道,哪些行是属于同一个单据的? 重载 Initialize 事件, 设置 this.ReportProperty.PrimaryKeyFieldName 属性为单据内码字段名, 例如: this.R...

技术小甜
2017/11/08
0
0
mysql 处理行转列,一种野路子解决方案

在使用 mysql 实现行转列的,要就是静态的,自己手写列,动态的太复杂容易出错,为了行转列写个存储过程好像没必要。 mysql 关键字中有这么几个函数 CONCAT_WS 合并列,可以是多个字段,中间...

小鸟00
09/06
0
0
Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

转自:http://blog.csdn.net/xiaokui_wingfly/article/details/42419207 多行转字符串 这个比较简单,用||或concat函数可以实现 实际上就是拆分字符串的问题,可以使用 substr、instr、regex...

Amui
2016/06/29
373
0
Oracle行转列

如果是oracle 10g以上 一个wm_concat函数就可以解决。 如果是oracle 9i以下就有点麻烦了。 表结构如下: NAME Null Type NSECCODE NOT NULL CHAR(6) CRESEARCHERCODE NOT NULL VARCHAR2(20)...

竹逸风
2016/06/22
9
0
如何设置同一单据的单据头字段各行合并显示吗?

要实现此功能,关键有两点: 1. 如何让系统知道,哪些行是属于同一个单据的? 重载 Initialize 事件, 设置 this.ReportProperty.PrimaryKeyFieldName 属性为单据内码字段名,例如: this.R...

51GT
2017/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
36分钟前
0
0
AVA中CAS-ABA的问题解决方案AtomicStampedReference

了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是...

码代码的小司机
39分钟前
1
0
Android JNI开发系列(十三) JNI异常处理

JNI 异常处理 JNI异常与JAVA处理异常的区别 JAVA 有异常处理机制,而JNI没有 如果JAVA中异常没有捕获,后面的代码不会执行,JNI会执行 JAVA编译时的异常,是在方法显示的声明了某一个异常,编...

蔡小鹏
52分钟前
2
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

Linux就该这么学
今天
3
0
Qt那些事0.0.7

在帮助文档(Overview - QML and C++ Integration)中随缘遇到一张图,是关于C++对象与QML整合介绍的,值得标记下来,虽然大部分功能也有所涉猎,但是还是留个记号,万一哪天我失忆了还想写Q...

Ev4n
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部