MySQL 动态行转列
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 动态行转列相关推荐
- MySQL 动态 行转列
MySQL 动态 行转列 1.需求 2.建表 3.插入数据 4. 转换前结果 5. 动态转换 1.需求 在每一行的内容不确定的情况下,需要动态的把行转为列. 2.建表 DROP TABLE IF EX ...
- mysql动态行转列函数_[MSSQL]采用pivot函数实现动态行转列
环境要求:2005+ 在日常需求中经常会有行转列的事情需求处理,如果不是动态的行,那么我们可以采取case when 罗列处理. 在sql 2005以前处理动态行或列的时候,通常采用拼接字符串的方法处 ...
- MySQL动态行转列
网上的都是一些静态的,用CASE WHEN结构实现.所以我写了一个动态的. SP 代码: DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`sp_row_co ...
- 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 ...
最新文章
- apache bench linux,linux – 如何在CentOS上安装Apache Benchmark?
- 利用深度学习(Keras)进行癫痫分类-Python案例
- 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?
- Matlab2021a安装教程
- html网页老是崩溃,MSHTML.dll 错误模块导致ie9最近经常崩溃
- 干货| 364套各类风格毕业设计答辩PPT模板~
- sp3485调试:sp3485-TTL转max485模块-TTL转usb模块电脑pc
- HP 惠普笔记本电脑 禁用触摸板 在插入鼠标后
- 【机器学习】LifeLong Learning(终身学习)介绍
- 树莓派接手机屏幕_如何将树莓派连接到手机屏幕
- Android 通用流行框架梳理
- 【学习笔记】HTML+CSS模仿静态淘宝首页
- 为什么c语言是学不完的,为什么C语言诡异离奇、缺陷重重,却获得了巨大的成功?...
- 你好啊 未来的自己
- 计算机联锁设计方案,设计方案实验3计算机联锁软件设计方案.docx
- 成功不是偶然的,它是从寂寞中成长起来的花朵-----王选
- oTree学习教程(六)Multiplayer games
- 赋能制造业 思科助力“独角兽”企业构建信息化基础架构
- 2018计算机二级c语言考试大纲,2018计算机office考试大纲
- 基于asp.net349k藏獒宠物养宠经验杂谈网站