mysql 存储国过程实现竖表变横表(将行数据值变为字段)
示例:
表结构如下:
CREATE TABLE `pressure` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`presurename` varchar(10) DEFAULT NULL COMMENT '离型剂',
`liquidpressure` varchar(10) DEFAULT NULL COMMENT '液体压力',
`cumulativeflow` varchar(10) DEFAULT NULL COMMENT '累计流量',
`timetraffic` varchar(10) DEFAULT NULL COMMENT '瞬时流量',
`maximumflow` varchar(10) DEFAULT NULL COMMENT '最高流量',
`systime` datetime DEFAULT NULL COMMENT '系统时间',
`sysday` date DEFAULT NULL COMMENT '日期',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='锻压机内工艺数据记录,离型剂压力流量监控数据保存。';
插入数据
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (7, 'R3上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (9, 'R3下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (10, 'R3上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (11, 'R3下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (12, 'R5上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (13, 'R5下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (14, 'R5上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (15, 'R5下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (17, 'R3上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (18, 'R3下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (19, 'R3上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (20, 'R3下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (21, 'R5上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (22, 'R5下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (23, 'R5上模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');
INSERT INTO `pressure`(`id`, `presurename`, `liquidpressure`, `cumulativeflow`, `timetraffic`, `maximumflow`, `systime`, `sysday`) VALUES (24, 'R5下模腔', '2', '3', '4', '4', '2021-11-09 17:07:19', '2021-11-09');

需求:将表中的pressurename字段的值变为字段,使用存储过程是实现。
sql语句如下:
CREATE DEFINER=`root`@`%` PROCEDURE `getpressuredays`()
BEGIN
set @day :=7;
Select
group_concat(
DISTINCT
if(liquidpressure is null,
CONCAT('max(if (presurename is null, presurename, 0)) as ''NULL'' '),
CONCAT('max(if (presurename=''', presurename, ''', liquidpressure, ''-'')) as ''',presurename, ''' '))
) into @sql from pressure join (SELECT @sql:='')a;
set @sql = concat('select DATE_FORMAT(sysday,"%Y-%m-%d") as systime, ', @sql, 'from pressure
where DATE_SUB(CURDATE(), INTERVAL "',@day,'" DAY)
<= date(sysday)
group by DATE_FORMAT(sysday,"%Y-%m%d") order by sysday desc;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
END
验证结果:

mysql 存储国过程实现竖表变横表(将行数据值变为字段)的更多相关文章
- sql中纵表变横表
纵表格式如图所示: 查询sql语句如下: ),content)content,Date from SummerChina ' 变成横表如图所示: 纵表变横表sql语句如下: select Time, ...
- sql 语句纵表变横表
现把转换方法列举如下: 1.纵表转横表: 纵表结构 TableA Name Course Grade 张三 语文 75 张三 数学 80 张三 英语 90 李四 语文 95 李四 数学 55 横表结构 ...
- 【转】纵表、横表互转的SQL
纵表.横表互转的SQL 原文1:http://takkymj.iteye.com/blog/751401 横表就是普通的建表方式,如一个表结构为: 主键.字段1.字段2.字段3... 如果变成纵表 ...
- 纵表、横表互转的SQL
纵表.横表互转的SQL By:大志若愚 1.建表: 纵表结构 Table_A create table Table_A ( 姓名 ), 课程 ), 成绩 int ) ) ) ) ) ) 姓名 课程 ...
- SQL竖表转横表 / 横表转竖表
竖表转横表 竖表结构: Name Course Grade 张三 语文 75 张三 数学 80 张三 英语 90 李四 语文 95 李四 数学 55 转换后横表结构: Name 语文 数学 英语 张三 ...
- [No0000128]SQL纵表与横表互转
1.纵表转横表: 纵表结构:Table1 转换后的横表结构: Sql示例代码: select username, sum(case Course when '语文' then Grade else 0 ...
- SQL Server之纵表与横表互转
1,纵表转横表 纵表结构 Table_A: 转换后的结构: 纵表转横表的SQL示例: SELECT Name , SUM(CASE WHEN Course = N'语文' THEN G ...
- SQL竖表转横表Json数据
1.数据准备 create table Vertical( Id int , ProjectName varchar(20), ProjectValue int ) insert into ...
- mysql 纵表转横表
表名:sales SELECT NAME, sum( CASE MONTH WHEN '一月份' THEN money ELSE END ) AS '一月份', sum( CASE MONTH WHE ...
- SQL SERVER 竖表变成横表
现有数据如下: Sql: select a.MODELID, max( case a.PNAME when'计划开始' then a.PVALUE end) as RStart, max( case ...
随机推荐
- TCP 协议之三次握手(一)
(声明:本文是阅读此文的总结笔记) 面试中对于该知识点的考察频繁,一般作为面试的暖场问题,你能够答出多少,答得多深刻,条理多清晰,给面试官的印象真的很重要. 三次握手的过程 TCP是面向连接的,全双工 ...
- TS语法中interface和class的理解
在TS中interface和后端语言如c#中的概念是不一样的,在TS中interface相当于定义了一种类型,是设置自定义类型的方式,区分与基础类型(number.string等),当定义变量时,就可 ...
- 有关插槽中scope的问题
暂时不理解
- oracle 存储过程-动态行转列,解决。
包头 create or replace package pro_test as TYPE out_cursor IS REF CURSOR; procedure Alarm_ContentsByTi ...
- spider_object_01使用正则爬取百度贴吧所有内容保存成html
"""本案例不涉及数据提取,仅指导 网页分页爬取的两种方式 思路非第一种:利用while Ture,传参,然后在设定一个判断条件,案例中用的是如果找不到下一页,循环退出( ...
- 机器学习之pandas介绍
pandas简介 pandas全称python Data Analysis Library,是基于numpy的一种工具,pandas纳入了大量库和一些标准的数据模型,提供了高效的操作大型数据集所需的工 ...
- bzoj 4817
LCT好题 首先我们考虑实际询问的是什么: 从LCT的角度考虑,如果我们认为一开始树上每一条边都是虚边,把一次涂色看作一次access操作,那么询问的实际就是两个节点间的虚边数量+1和子树中的最大虚边 ...
- 【python】界面学习
最近开始要用python做界面了,又是在百度的洪流中不断呛水.下面列举了很多我在过程中查询的内容以及我认为相对对我的认知有益的链接. 1.python有哪些做界面的工具 三个:python gui 中 ...
- 项目实训 DAY17-18
第一天,与后端的同学交接,先跟他说了怎么安装依赖库,弄完后他那边运行有些问题. 第二天,后端的同学说可以运行但无法部署,我思考后一起商量着只做静态模型(本身不同的两张图片只有input有区别),然后添 ...
- vue+element-ui+sortable.js实现表格行和列的拖拽
项目碰到一个需求是需要表格字段列进行顺序拖拽,查过一些资料,中途也碰到了很多坑,实现方式如下: 封装成公用组件操作 //父组件 <template> <div> <com ...