mysql 列转行,合并字段的方法
数据表(表名:xsk)
+----+------+-----------+-------+
| id | name| course | score |
+----+------+-----------+-------+
| 1 | 刘备 | 英语 | 100 |
| 2 | 关羽 | 英语 | 99 |
| 3 | 张飞 | 英语 | 98 |
| 4 | 刘备 | 数学 | 100 |
| 5 | 关羽 | 数学 | 99 |
| 6 | 张飞 | 数学 | 98 |
+----+------+-----------+-------+
列转行:利用max(case when then)
max---聚合函数 取最大值
(case course when '英语' then score else 0 end) ---判断
as 语文---别名作为列名
select name,MAX(case when course='英语' then score end ) as 英语,MAX(case when course ='数学' then score end) as 数学 from xsk group by name ;
+------+--------+---------+
| name | 英语 | 数学 |
+------+--------+--------+
| 刘备 | 98 | 98 |
| 关羽 | 100 | 100 |
| 张飞 | 99 | 99 |
+------+--------+---------+
合并字段显示:利用group_cancat(course,”:”,”score”)
select name,group_concat(course,":",score)as 成绩 from xsk group by name;
+--------+---------------------------------+
| name | 成绩 |
+--------+---------------------------------+
| OO | english:98,chinese:98 |
| xx | english:100,chinese:100 |
| zz | english:99,chinese:99 |
+--------+---------------------------------+
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。
比较抽象,难以理解。
通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函
数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。
group_concat只有与group by语句同时使用才能产生效果
***********************************************************************************************************************************************************************
另附原文:
http://www.jb51.net/article/109487.htm
mysql 列转行,合并字段的方法的更多相关文章
- Oracle中的列转行实现字段拼接用例
文章目录 Oracle中的列转行实现字段拼接 场景 在SQL使用过程中经常有这种需求:将某列字段拼接成in('XX','XX','XX','XX','XX','XX' ...)做为查询条件. 实现 s ...
- mysql 列转行,合并字段
数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断 ...
- Mysql 列转行group_concat函数,与行转列
1.正常情况. SELECT JoinEventIds from nt_mainnum 2.使用group_concat函数 select group_concat(JoinEventIds) fro ...
- mysql 列转行
第一种方法:使用序列化表的方法实现列转行 第一种方法:使用UNION的方法实现列转行 第二种方法:使用序列化表的方法实现列转行
- oracle 行转列~列转行(几种方法)
工作中,我们经常会碰到行转列的情况 这里我介绍几种简单的方法--行转列 1.oracle的pivot函数 原表 使用pivot函数: with temp as(select '四川省' nation ...
- Mysql 列转行统计查询 、行转列统计查询
-- ---------------------------- -- Table structure for `TabName` -- ---------------------------- D ...
- mysql列转行 行转列
列转行 SELECT flag ,substring_index(substring_index(t.context,), ) as result FROM ( select 'aa' as flag ...
- mysql 列转行 动态写法
-- 列转行动态sql -- 测试表DROP TABLE IF EXISTS `tb_score`; CREATE TABLE `tb_score` ( `id` int(11) NOT NULL A ...
- ( 转 ) Mysql group_concat 的反向应用实现(Mysql列转行)
用过Mysql的都知道她有一个很好的实现行转列功能的函数group_concat函数,非常方便 点击(此处)折叠或打开 SELECT * FROM group_test; SELECT id, GRO ...
随机推荐
- js生成图片
var image = new Image(); var c = document.getElementById("myCanvas"); var ctx = c.getConte ...
- Ubuntu gnome 16.04下的一些个人配置
虽说并没有改什么,但还是花了我很长时间去搞明白…… 最开始要看下这里,调下比如系统时间等东西 UPD:安装时千万不要对主目录进行加密 1.登录前调整一下触控板和打开小键盘 先打开/etc/gdm3/I ...
- 谈pkusc2016的几道数学题
题面搬来的qwq(忘记出处了 水印应该能表示) [题解] 1. 我们看到这题先想到令(x+y+z)^3 展开得到一坨,稍微减减,得到我们要求证 delta = 3xy^2+3xz^2+3yx^2+3y ...
- 【BZOJ】1770 [Usaco2009 Nov]lights 燈
[算法]高斯消元-异或方程组 [题解]良心简中题意 首先开关顺序没有意义. 然后就是每个点选或不选使得最后得到全部灯开启. 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的. 异或中1可以完美 ...
- windows支持applocker的版本
Operating system requirements The following table show the on which operating systems AppLocker fe ...
- python 实现定时循环触发某个方法
直接贴上代码 import threading def sayhello(): print "hello world" global t #Notice: use global v ...
- python3 线程_threading模块
'''并发:同一个时间段内运行多个程序的能力 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成 程序:食谱数据集:鸡蛋.牛奶.糖等进程控制块:记下食谱做到 ...
- C++学习笔记之——内联函数,引用
本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...
- Javacore分析(转载)
本文转自(http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuz ...
- 新版谷歌浏览器设置flash插件不提示步骤
1.先去chrome实验室界面chrome://flags/#enable-ephemeral-flash-permission选择取消Disabled.取消该实验室选项. 2.然后去chrome:/ ...