MySQL 动态 行转列
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 动态 行转列相关推荐
- mysql动态行转列函数_[MSSQL]采用pivot函数实现动态行转列
环境要求:2005+ 在日常需求中经常会有行转列的事情需求处理,如果不是动态的行,那么我们可以采取case when 罗列处理. 在sql 2005以前处理动态行或列的时候,通常采用拼接字符串的方法处 ...
- MySQL动态行转列
网上的都是一些静态的,用CASE WHEN结构实现.所以我写了一个动态的. SP 代码: DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`sp_row_co ...
- MySQL 动态行转列
CREATE TABLE `tbl01` ( `id` INT(11) DEFAULT NULL, `kemu` VARCHAR(20) COLLATE utf8_unicode_ci DEF ...
- mysql实现动态行转列
需求背景:在任务管理系统中,有任务详情表,每个任务下又分子任务节点,每个任务节点都有具体的跟进日期,包括开始时间结束时间,每天的任务完成进度. 有这样一个需求:在任务管理系统中根据任务节点id,展示每 ...
- mysql中将列动态转换为行,mysql 行转列 MySQL数据库动态行转列
想把mysql一个表的行转成列,图1是原表,想实现图2的样式SELECT MAX(CAS就是一个动态的行列转换 CREATE TABLE `c_wssb_zz` ( `aa011` varchar(1 ...
- mysql行转列sql函数_sql动态行转列的两种方法
第一种方法: 代码如下: select *from ( select Url,case when Month=01 then '1月' when Month=02 then '2月' when ...
- 动态行转列:处理不确定数量的行转列操作
目录 介绍 分析过程 数据样例 开始动手 添加辅助列 全连接换左连接 完成静态SQL 将动态部分设置到变量 改编为动态SQL 验证 总结 介绍 行转列操作是一种常见的数据转换技术,它可以将原始的行数据 ...
- mssql 动态行转列。
mssql 动态行转列. create table #a (a int , b char(4)) insert into #a select 1,'张三' insert into #a select ...
- 关于mysql的行转列问题
关于mysql的行转列问题 一张表,里面有 id name state customerid 4个字段,其中status有3个值0 1 2 ,用一条sql查询出此种格式 customer ...
最新文章
- VS Code竟然能约会,找对象不看脸,看编程水平
- 团队项目个人进展——Day05
- idea java编译报错_intellij-idea,java_idea 编译报错,intellij-idea,java - phpStudy
- 同一目录下有大量文件会影响效率吗_到底是什么原因才导致 select * 效率低下的?
- 问号在c语言中运算符,C# 运算符 ?、??、?: 各种问号的用法和说明
- java9之后,String为何从char类型数组转成byte类型数组
- 这届618:商家全渠道作战,天猫仍是主场
- 2016腾讯实习生招聘_基础研究 面试心得
- C++ 学生信息管理系统课程设计报告
- APP - 重磅消息!微信测试无需新手机号注册新微信号功能
- 微信自动加好友可以使用python实现
- Ajax访问接口报错NET::ERR_CERT_REVOKED
- “没有银弹”的由来!
- CSDN博客大神汇总
- 大屏可视化色彩设计基本知识
- AVRWARE++开发笔记8:Atmel Studio去除拼写检查
- 解决 Navicat 无法导入带外键的json 亲测有效!
- uniapp跨域设置
- 10.11 学习记录
- CAD图纸打印文字显示空心怎么办?