CREATE TABLE `tbl01` (
  `id` INT(11) DEFAULT NULL,
  `kemu` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

INSERT INTO tbl01(id, kemu) VALUES ('1', '语文');
INSERT INTO tbl01(id, kemu) VALUES ('2', '数学');
INSERT INTO tbl01(id, kemu) VALUES ('3', '英语');
INSERT INTO tbl01(id, kemu) VALUES ('4', '物理');
INSERT INTO tbl01(id, kemu) VALUES ('5', '化学');

CREATE TABLE `tbl02` (
  `nid` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `kemu` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `chji` INT(11) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

INSERT INTO tbl02 (nid, kemu, chji) VALUES ('李明', '1', '95');
INSERT INTO tbl02 (nid, kemu, chji) VALUES ('李明', '2', '89');
INSERT INTO tbl02 (nid, kemu, chji) VALUES ('李明', '4', '74');
INSERT INTO tbl02 (nid, kemu, chji) VALUES ('张三', '1', '81');
INSERT INTO tbl02 (nid, kemu, chji) VALUES ('张三', '3', '65');
INSERT INTO tbl02 (nid, kemu, chji) VALUES ('张三', '5', '38');

SET @sql := 'SELECT nid';
SELECT @sql := CONCAT(@sql, ', max(case kemu when ', id, ' then chji else 0 end) as ', kemu)
FROM (SELECT DISTINCT id, kemu FROM tbl01) AS a;
SELECT @sqlstr := CONCAT(@sql, ' from tbl02 group by nid');
PREPARE rc FROM @sqlstr;

EXECUTE rc;

CREATE TABLE `tbl03` (
  `id` int(11) DEFAULT NULL,
  `xm` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `nj` int(11) DEFAULT NULL,
  `km` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `cj` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

统计每个人各年级的总成绩:

SET @sql := 'SELECT xm';
 SELECT @sql := CONCAT(@sql, ', sum(case nj when ', nj, ' then cj else 0 end) as `', nj, '年级`')
 FROM (SELECT nj FROM tbl03 GROUP BY nj) AS a;
 SELECT @sqlstr := CONCAT(@sql, ' from tbl03 group by xm');
 PREPARE rc FROM @sqlstr;
 EXECUTE rc;

MySQL 动态行转列相关推荐

  1. MySQL 动态 行转列

    MySQL 动态 行转列 1.需求 2.建表 3.插入数据 4. 转换前结果 5. 动态转换 1.需求 在每一行的内容不确定的情况下,需要动态的把行转为列. 2.建表 DROP TABLE IF EX ...

  2. mysql动态行转列函数_[MSSQL]采用pivot函数实现动态行转列

    环境要求:2005+ 在日常需求中经常会有行转列的事情需求处理,如果不是动态的行,那么我们可以采取case when 罗列处理. 在sql 2005以前处理动态行或列的时候,通常采用拼接字符串的方法处 ...

  3. MySQL动态行转列

    网上的都是一些静态的,用CASE WHEN结构实现.所以我写了一个动态的. SP 代码: DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`sp_row_co ...

  4. mysql实现动态行转列

    需求背景:在任务管理系统中,有任务详情表,每个任务下又分子任务节点,每个任务节点都有具体的跟进日期,包括开始时间结束时间,每天的任务完成进度. 有这样一个需求:在任务管理系统中根据任务节点id,展示每 ...

  5. mysql中将列动态转换为行,mysql 行转列 MySQL数据库动态行转列

    想把mysql一个表的行转成列,图1是原表,想实现图2的样式SELECT MAX(CAS就是一个动态的行列转换 CREATE TABLE `c_wssb_zz` ( `aa011` varchar(1 ...

  6. mysql行转列sql函数_sql动态行转列的两种方法

    第一种方法: 代码如下: select *from ( select Url,case  when  Month=01 then  '1月' when  Month=02 then '2月' when ...

  7. 动态行转列:处理不确定数量的行转列操作

    目录 介绍 分析过程 数据样例 开始动手 添加辅助列 全连接换左连接 完成静态SQL 将动态部分设置到变量 改编为动态SQL 验证 总结 介绍 行转列操作是一种常见的数据转换技术,它可以将原始的行数据 ...

  8. mssql 动态行转列。

    mssql 动态行转列. create table #a (a int , b char(4)) insert into #a select 1,'张三' insert into #a select ...

  9. 关于mysql的行转列问题

    关于mysql的行转列问题 一张表,里面有  id  name   state    customerid 4个字段,其中status有3个值0 1 2 ,用一条sql查询出此种格式 customer ...

最新文章

  1. apache bench linux,linux – 如何在CentOS上安装Apache Benchmark?
  2. 利用深度学习(Keras)进行癫痫分类-Python案例
  3. 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?
  4. Matlab2021a安装教程
  5. html网页老是崩溃,MSHTML.dll 错误模块导致ie9最近经常崩溃
  6. 干货| 364套各类风格毕业设计答辩PPT模板~
  7. sp3485调试:sp3485-TTL转max485模块-TTL转usb模块电脑pc
  8. HP 惠普笔记本电脑 禁用触摸板 在插入鼠标后
  9. 【机器学习】LifeLong Learning(终身学习)介绍
  10. 树莓派接手机屏幕_如何将树莓派连接到手机屏幕
  11. Android 通用流行框架梳理
  12. 【学习笔记】HTML+CSS模仿静态淘宝首页
  13. 为什么c语言是学不完的,为什么C语言诡异离奇、缺陷重重,却获得了巨大的成功?...
  14. 你好啊 未来的自己
  15. 计算机联锁设计方案,设计方案实验3计算机联锁软件设计方案.docx
  16. 成功不是偶然的,它是从寂寞中成长起来的花朵-----王选
  17. oTree学习教程(六)Multiplayer games
  18. 赋能制造业 思科助力“独角兽”企业构建信息化基础架构
  19. 2018计算机二级c语言考试大纲,2018计算机office考试大纲
  20. 基于asp.net349k藏獒宠物养宠经验杂谈网站

热门文章

  1. 光伏并网逆变器的选购及维护保养
  2. 二进制与十进制的相互转换(方法介绍,思维理解)
  3. Postman-newman基础用法
  4. 后端分页+前端分页显示(Angular+Primeng+SpringBoot)
  5. 接电话的方式(爆笑)
  6. 基于Java环境下的高校跳蚤市场商城系统
  7. docker(11):安全
  8. python 字符串替换_python字符串替换第一个字符串的方法
  9. 客户关系管理软件费用多少?
  10. 无向图双连通分量(DCC)