MYSQL 数据行列交换(交换数据) 存储过程实现

news2024/11/24 16:42:24

行列转换的存储过程

初始图:

 

 效果图:

实现过程:

1:建表、建数据

CREATE TABLE `changeprice` (

`id` bigint(20) NOT NULL auto_increment,

`sid` bigint(20) NOT NULL,

`datecreated` timestamp NOT NULL defaultCURRENT_TIMESTAMP,

`price` varchar(50) NOT NULL,

PRIMARY KEY  (`id`)

) ;

插入数据:

(1,1,'2009-05-08','30'),

(2,1,'2009-05-10','50'),

(3,1,'2009-05-11','12'),

(4,1,'2009-05-12','20'),

(5,1,'2009-05-14','50'),

(6,1,'2009-05-15','30'),

(7,3,'2009-05-11','12'),

(8,3,'2009-05-12','30'),

(9,3,'2009-05-14','50'),

(10,3,'2009-05-15','30'),

(11,2,'2009-05-08','30'),

(12,2,'2009-05-09','50'),

(13,2,'2009-05-11','12'),

(14,2,'2009-05-13','20'),

(15,2,'2009-05-14','50'),

(16,2,'2009-05-15','30');

存储过程实现:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()

begin

DECLARE done int default 0;

DECLARE strDate DATE;

DECLARE str varCHAR(10000) default '';

DECLARE cur1 CURSOR FOR select DISTINCT(DATE(datecreated)) from changeprice order by datecreated;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;

set done = 0;

open cur1;

REPEAT

FETCH cur1 INTO strDate;

if done <> 1 then

set str=CONCAT(str, ',', 'SUM(if(datecreated=''', strDate, ''', price, 0))', '''', strDate,'''');

end IF;

UNTIL done = 1

END REPEAT;

close cur1;

set @sqlString=CONCAT(' select sid ', str, ' from changeprice group by sid ');

prepare sqlstmt from @sqlString;

execute sqlstmt;

deallocate prepare sqlstmt;

set str='';

end;

编辑器运行 call test();即可
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nvue2中使用axios和插槽

一、组件的生命周期1、组件的生命周期经历的阶段&#xff1a;&#xff08;1&#xff09;创建阶段&#xff1a;beforeCreate、created、beforeMount、mounted&#xff08;2&#xff09;运行阶段&#xff1a;beforeUpdate、update&#xff08;3&#xff09;销毁阶段&#xff1a;2…

C语言二维数组和二重指针详解

二维数组 一个二维数组&#xff0c;在本质上&#xff0c;是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组&#xff0c;形式如下&#xff1a; type arrayName [x][y]; 这个表示&#xff0c;有x个一维数组&#xff0c;每个一维数组的元素个数是y个。 声明示例&#xff1…

手写VITE-MockJS插件

mockJS是什么 mockJS是模拟接口数据&#xff0c;拦截客户端的请求的一个工具。 vite插件编写流程 pnpm init 初始化 pnpm install vite -D 安装Vite 配置package.json文件中的脚本 "scripts": {"dev": "vite","build": "vite…

K8s集群离线安装-kubeadm-详细篇

1、部署k8s的两种方式&#xff1a;kubeadm 和二进制源码安装 #本次实验采用的部署Kubernetes方式&#xff1a; kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。2、环境准备 #服务器要求&#xff1a; 建…

JavaSE学习day1_02, JDK安装

1.4 环境变量 1.4.1 为什么配置环境变量 在初次学习编程的时候,环境变量我们经常提到,但是环境变量到底是什么?是干嘛的?弄清楚这些问题很重要. 如果我们想要在CMD的任意路径下都可以打开任意的软件&#xff0c;那么就需要把软件的路径配置到环境变量当中。 为了便于大家…

Zotero | 快速入门

文章目录0. 前言1. Zotero快速入门1.1 下载Zotero和Connector2.2 联动sci-hub实现英文文献批量下载2.3 英文文献翻译2.4 中文文献元数据识别2.5 Zotero其他配置2.5.1 语言切换2.5.2 数据存储位置更改参考0. 前言 Zotero是一款自由及开放源代码的文献管理软件&#xff0c;管理书…

告别2022,喜迎2023

2022只剩下最后几天&#xff0c;新的一年即将拉开序幕。你的2022&#xff0c;是苦尽甘来、柳暗花明&#xff0c;还是安适如常、平安喜乐?你会用什么词来形容你的2022&#xff0c;你期待的2023又是什么样的呢? 时光荏苒&#xff0c;岁月悠悠&#xff0c;转眼间&#xff0c;202…

猿代码超算实习生计划之编程语言分析

编程语言特别多&#xff0c;很多同学都特别纠结以后到底选择哪一种编程语言&#xff0c;才好找高薪实习和工作。 其实编程语言没有好坏之分。很多同学选择未来就业和实习方向时很多也都是参考的薪资和岗位数量。就像前几年很多人选的前端、现在卷到不行的Java、还有今年连实习…

【Cortex-A7核PWM实验】

Cortex-A7核PWM实验 ---蜂鸣器、风扇、震动马达PWN概念PWM硬件电路图如何产生PWM方波捕获/比较寄存器工作原理代码实现PWN概念 PWM是指脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种常用的模拟信号转换为数字信号的方法。 1.脉冲&#xff1a…

C#WinForm实现多语言切换

因项目需要&#xff0c;所以在网上找了一些方法实现了该功能&#xff0c;本文也是做一个总结和记录。使用resx文件实现Winform多语言切换&#xff0c;以实现简体中文、英文、泰语的切换为例。如果后续需要增加其它语言的切换&#xff0c;只需要按照步骤重复操作即可。 效果图如…

【Kotlin】函数 ⑨ ( Kotlin 语言中的闭包概念 | Java 语言中函数作为参数的替代方案 )

文章目录一、闭包概念二、Java 中函数作为参数的替代方案 ( 匿名内部类 )一、闭包概念 匿名函数 就是 Lambda 表达式 , 同时也是 闭包 , 三者的是相同的概念 ; 闭包意义 : 在 Java 中 , 通过 Package 包 , Class 类 , 将作用域区分开 , 将变量 定义在 不同的 包 或 类中 , 可…

阿里云创世纪之盘古传奇

文章目录飞天(Apsara)云计算平台简介面向私有云的Apsara Stack盘古横空出世盘古的架构盘古基本介绍盘古API基于C语言的SDK基于命令行的文件操作接口pu盘古中的目录和文件盘古目录盘古中的文件盘古中的文件类型盘古应用场景盘古的功能特性盘古主要性能盘古的数据安全盘古的边界盘…

Docker - Docker网络

一、Docker网络介绍 Docker是基于Linux Kernel&#xff08;内核&#xff09;的namespace&#xff0c;CGroups,UnionFileSystem等技术封装成的一种自定义容器格式&#xff0c;从而提供了—套虚拟运行环境。 1、namespace&#xff1a;用来做隔离的&#xff0c;比如pid[进程].、…

Java多线程案例之阻塞队列

文章目录一. 认识阻塞队列1. 什么是阻塞队列2. 生产者消费者模型3. 标准库中阻塞队列类二. 基于循环队列实现的简单阻塞队列1. 循环队列的简单实现2. 阻塞队列的简单实现一. 认识阻塞队列 1. 什么是阻塞队列 阻塞队列本质上还是一种队列, 和普通队列一样, 遵循先进先出, 后进…

291. 蒙德里安的梦想(状态压缩dp详解)

求把 NM 的棋盘分割成若干个 12 的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0c;M4 时&#xff0c;共有 5 种方案。当 N2&#xff0c;M3 时&#xff0c;共有 3 种方案。 如下图所示&#xff1a; 输入格式 输入包含多组测试用例。 每组测试用例占一行&#xff0c…

龙芯机器JDK安装和配置

龙芯机器&#xff1a;[rootlocalhost j2sdk-image]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c4 Loongson-3A R4 (Loongson-3A4000) 1800MHz龙芯机器JDK安装和配置下载地址&#xff1a;http://www.loongnix.cn/zh/api/java/选择JDK8&#xff0c;选择MIPS64进行下…

2-3进程管理-进程同步

文章目录一.进程同步、互斥二.实现临界区互斥的基本方法&#xff08;一&#xff09;软件实现方法&#xff08;二&#xff09;硬件实现方法三.互斥锁四.信号量机制五.经典同步问题&#xff08;一&#xff09;生产者-消费者问题&#xff08;二&#xff09;读者-写者问题&#xff…

流逝的一年

昨天远方的大哥打来了电话&#xff0c;我们聊了下近况。当他问及去年是否有新的著作问世&#xff0c;我不禁有些赧然&#xff0c;解释说还在学习中… 放下电话后&#xff0c;我陷入了思索&#xff1a;又是一年划上了句号&#xff0c;这一年我做了什么&#xff1f;我又有什么收…

数据库的一些基本概念

一、服务器&#xff1a;&#xff08;更正大家头脑中的一个错误认识&#xff09; 1、服务器是一种软件&#xff0c;不是硬件&#xff0c;不是计算机。 2、不同服务器负责调用不同类型的文件。 二、表文件、数据库、数据库服务器以及SQL语句&#xff1a; 1、表文件: …

一条 select 语句的执行过程

MySQL 从大方向来说&#xff0c;可以分为 Server 层和存储引擎层。而 Server 层包括连接器、查询缓存、解析器、预处理器、优化器、执行器等&#xff0c;最后 Server 层再通过 API 接口形式调用对应的存储引擎层提供的接口来执行增删改查操作。 如下即为一个简略的 select 语句…