MySQL 动态 行转列

  • 1.需求
  • 2.建表
  • 3.插入数据
  • 4. 转换前结果
  • 5. 动态转换

1.需求

在每一行的内容不确定的情况下,需要动态的把行转为列。

2.建表

DROP TABLE IF EXISTS tb_score;CREATE TABLE tb_score(id INT(11) NOT NULL auto_increment,userid VARCHAR(20) NOT NULL COMMENT '用户id',subject VARCHAR(20) COMMENT '科目',score DOUBLE COMMENT '成绩',PRIMARY KEY(id)
)ENGINE = INNODB DEFAULT CHARSET = utf8;

3.插入数据

INSERT INTO tb_score(userid,subject,score) VALUES ('001','语文',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('001','数学',92);
INSERT INTO tb_score(userid,subject,score) VALUES ('001','英语',80);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','语文',88);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','数学',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('002','英语',75.5);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','语文',70);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','数学',85);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','英语',90);
INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);

4. 转换前结果

5. 动态转换

SET @EE='';
select @EE :=CONCAT(@EE,'sum(if(subject= \'',subject,'\',score,0)) as ',subject, ',') AS aa FROM (SELECT DISTINCT subject FROM tb_score) A ;SET @QQ = CONCAT('select ifnull(userid,\'TOTAL\')as userid,',@EE,' sum(score) as TOTAL from tb_score group by userid WITH ROLLUP');
-- SELECT @QQ;PREPARE stmt FROM @QQ;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

结果图
结果1

结果2

若有错误,希望大佬指出。
对你有帮助给点个

MySQL 动态 行转列相关推荐

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

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

  2. MySQL动态行转列

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

  3. MySQL 动态行转列

    CREATE TABLE `tbl01` (   `id` INT(11) DEFAULT NULL,   `kemu` VARCHAR(20) COLLATE utf8_unicode_ci DEF ...

  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. VS Code竟然能约会,找对象不看脸,看编程水平
  2. 团队项目个人进展——Day05
  3. idea java编译报错_intellij-idea,java_idea 编译报错,intellij-idea,java - phpStudy
  4. 同一目录下有大量文件会影响效率吗_到底是什么原因才导致 select * 效率低下的?
  5. 问号在c语言中运算符,C# 运算符 ?、??、?: 各种问号的用法和说明
  6. java9之后,String为何从char类型数组转成byte类型数组
  7. 这届618:商家全渠道作战,天猫仍是主场
  8. 2016腾讯实习生招聘_基础研究 面试心得
  9. C++ 学生信息管理系统课程设计报告
  10. APP - 重磅消息!微信测试无需新手机号注册新微信号功能
  11. 微信自动加好友可以使用python实现
  12. Ajax访问接口报错NET::ERR_CERT_REVOKED
  13. “没有银弹”的由来!
  14. CSDN博客大神汇总
  15. 大屏可视化色彩设计基本知识
  16. AVRWARE++开发笔记8:Atmel Studio去除拼写检查
  17. 解决 Navicat 无法导入带外键的json 亲测有效!
  18. uniapp跨域设置
  19. 10.11 学习记录
  20. CAD图纸打印文字显示空心怎么办?

热门文章

  1. 十二省联考 2019 题解
  2. 为何世人皆称春酿独好?
  3. Python零基础入门指南
  4. gcd(最大公约数算法)
  5. 网络地址转换(NAT)(一)
  6. Flutter实战Stack与Positioned使用详解
  7. OpenMPI的安装与运行分布式项目
  8. python获取当前时间戳Long类型
  9. 以太坊微支付通道原理与实现
  10. 关于Elmo驱动器Main Feedback error错误处理