示例:

表结构如下:

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 存储国过程实现竖表变横表(将行数据值变为字段)的更多相关文章

  1. sql中纵表变横表

    纵表格式如图所示: 查询sql语句如下: ),content)content,Date from SummerChina ' 变成横表如图所示: 纵表变横表sql语句如下: select Time, ...

  2. sql 语句纵表变横表

    现把转换方法列举如下: 1.纵表转横表: 纵表结构 TableA Name Course Grade 张三 语文 75 张三 数学 80 张三 英语 90 李四 语文 95 李四 数学 55 横表结构 ...

  3. 【转】纵表、横表互转的SQL

    纵表.横表互转的SQL 原文1:http://takkymj.iteye.com/blog/751401   横表就是普通的建表方式,如一个表结构为: 主键.字段1.字段2.字段3... 如果变成纵表 ...

  4. 纵表、横表互转的SQL

    纵表.横表互转的SQL By:大志若愚 1.建表: 纵表结构 Table_A  create table Table_A ( 姓名 ), 课程 ), 成绩 int ) ) ) ) ) ) 姓名 课程 ...

  5. SQL竖表转横表 / 横表转竖表

    竖表转横表 竖表结构: Name Course Grade 张三 语文 75 张三 数学 80 张三 英语 90 李四 语文 95 李四 数学 55 转换后横表结构: Name 语文 数学 英语 张三 ...

  6. [No0000128]SQL纵表与横表互转

    1.纵表转横表: 纵表结构:Table1 转换后的横表结构: Sql示例代码: select username, sum(case Course when '语文' then Grade else 0 ...

  7. SQL Server之纵表与横表互转

    1,纵表转横表 纵表结构 Table_A: 转换后的结构: 纵表转横表的SQL示例: SELECT  Name ,        SUM(CASE WHEN Course = N'语文' THEN G ...

  8. SQL竖表转横表Json数据

    1.数据准备 create  table  Vertical(  Id  int ,  ProjectName varchar(20),  ProjectValue int ) insert into ...

  9. mysql 纵表转横表

    表名:sales SELECT NAME, sum( CASE MONTH WHEN '一月份' THEN money ELSE END ) AS '一月份', sum( CASE MONTH WHE ...

  10. SQL SERVER 竖表变成横表

    现有数据如下: Sql: select a.MODELID, max( case a.PNAME when'计划开始' then a.PVALUE end) as RStart, max( case ...

随机推荐

  1. [Python.Unix和Linux系统管理指南]书籍

    Python.Unix和Linux系统管理指南书籍下载地址 提取码:eqf4 内容简介  · · · · · · <Python UNIX和Linux系统管理指南>介绍了Python语言如 ...

  2. BurpSuite暴力破解和防御实战

    burpsuite暴力破解 工具准备 burp suite 用于攻击web 应用程序的集成平台 jsEncrypter 一个用于前端加密Fuzz的Burp Suite插件,支持base64.sha.m ...

  3. linux 历史命令修改

    一 添加历史命令时间和用户 echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >>/etc/profilesource /e ...

  4. Little Tiger vs. Deep Monkey(hdu4815)01背包

    题:http://acm.hdu.edu.cn/showproblem.php?pid=4815 题意:已知n个题以及每个题答对的得分,给出p概率 小老虎vs小猴子答题:已知小猴子随机答题,请问老虎至 ...

  5. Leetcode 二维数组周游 54

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ...

  6. Spring入门之spring 概述(01)

    1.1 spring 概述 1.1.1 spring 是什么 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control ...

  7. 基于Face-Recognition的计算机人脸识别安全认证程序

    20202411 2020-2021-2 <Python程序设计>实验四报告 基于Face-Recognition的计算机人脸识别安全认证程序 课程:<Python程序设计> ...

  8. 杭电OJ--1003题C++实现

    #include<iostream>using namespace std;int a[100000];void solve(int k,int n,int t);int main(){  ...

  9. 学校——DFS图的遍历

    学校实验 没什么多说的 就是实现一个图的遍历 由于学校已经输入的片段过于晦涩难懂 无法进行 在网上看了别人写的代码 提升了理解代码的一点能力 #include"string.h" ...

  10. python机器学习——PCA降维算法

    背景与原理: PCA(主成分分析)是将一个数据的特征数量减少的同时尽可能保留最多信息的方法.所谓降维,就是在说对于一个$n$维数据集,其可以看做一个$n$维空间中的点集(或者向量集),而我们要把这个向 ...