mysql 存储过程方式 实现动态行转列

MySQL实战:5种行转列方法对比(附动态SQL生成技巧) 本文详细对比了MySQL中5种行转列(Pivot)方法的优缺点,包括CASE WHEN经典方案、IF函数简化写法以及动态SQL生成技巧。特别介绍了预处理语句和存储过程实现动态列生成的方法,并提供了大数据量优化和NULL值处理等实用技巧,帮助开发者高效处理数据分析与报表生成需求。 阅读详情

CREATE DEFINER=`Dcadmin`@`%` PROCEDURE `query_action_company`(IN surveyId varchar(100),IN formatId varchar(100),IN startRow INTEGER(16),IN endRow INTEGER(16),IN latestProcessId varchar(100))
    READS SQL DATA
BEGIN

# 表1.1_原始工时机构汇总_业务类型一,按照指定业态的具体活动在每个公司的用时
 
set @sql =null;
set @tmp =null;

SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(a.std_comp_name = ''',
      a.std_comp_name,
      ''', cast(a.comp_action_work_hour as decimal(10,2)), 0)) AS ''',
      a.std_comp_name, '\''
    )
  ) INTO  @sql
FROM 
 rpt_tgt_format_comp_action_work_hour a where survey_id = surveyId and format_id = formatId and process_id = latestProcessId;

Set @tmp =  @sql;


SET  @sql = CONCAT('select a.action_name,b.flow3_name,b.flow4_name,  ',  @sql, ' from rpt_tgt_format_comp_action_work_hour  a left join rpt_map_flow_info b on a.flow4_id = b.flow4_id where  a.survey_id = \'',surveyId,'\'',' and format_id = \'',formatId,'\'',' and process_id = \'',latestProcessId,'\'');                      
 SET @sql = CONCAT( @sql, ' Group by a.action_code,a.action_name order by b.flow3_name,b.flow4_name ');
 


# 如果不分页传入-1就可以
IF startRow  <> -1 then
SET @sql = CONCAT(@sql, ' limit ', startRow, ',',endRow);
END IF; 

# 如果数据为空,也需要返回字段
if @tmp <>''  then  
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
else 
set  @sql = CONCAT('select  a.action_name,b.flow3_name,b.flow4_name FROM rpt_tgt_format_comp_action_work_hour a  left join 
rpt_map_flow_info b on a.flow4_id = b.flow4_id where  a.survey_id = \'',surveyId,'\'',' and a.format_id = \'',formatId,'\'','and a.process_id = \'',latestProcessId,'\'');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
end if;

END

Mysql动态行转列(不使用存储过程) Mysql动态行转列(不使用存储过程) 数据: 行转列后的数据: SQL如下(示例): 创建表格 CREATE TABLE `dome` ( `id` INT NOT NULL AUTO_INCREMENT, `testdate` DATE DEFAULT NULL COMMENT '时间', `testtext` VARCHAR(50) DEFAULT NULL COMMENT '内容', `stature` DOUBLE DEFAULT NULL COMMENT '身高', PR 阅读详情

相关推荐

sql动态行转列 存储过程

使用sql语句实现动态行转列,建表后导入excel测试数据

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 '科

weixin_44254243的博客 6834

MuJoCo新手必看:5分钟搞定你的第一个机器人仿真(附Python代码)

本文为零基础新手提供了一份详尽的MuJoCo物理仿真引擎入门指南。从环境搭建、MJCF模型文件解析,到编写Python控制代码,手把手教你5分钟内创建并运行第一个机器人仿真。内容涵盖双摆模型控制与自定义四轮小车构建,帮助你快速掌握这一高性能开源工具,迈出机器人学与强化学习仿真的第一步。

weixin_29032489的博客 655

MySQL行专列----动态列

SET @EE=‘’;/**将CONCAT()拼接后的SQL片段赋值给变量@EE。:= 对变量进行赋值concat() 拼接字符串函数sum() 求和函数IF(condition, value_if_true, value_if_false) 如果条件为 TRUE,IF() 函数返回一个值,如果条件为 FALSE,则返回另一个值。sum(if()) : 如果subject = subject, 则取对应的score, 否则取0进行求和,并取别名为subject字段对应的值。

qq_37196265的博客 2099

Cadence IC618版图DRC验证License报错排查:从虚拟机网络配置到HOSTID的实战解析

本文详细解析了Cadence IC618版图设计中DRC验证License报错的排查方法,重点从虚拟机网络配置到HOSTID获取的实战经验。通过对比ifconfig与ip add命令的差异,提供了正确的HOSTID获取方式及License文件修改技巧,帮助工程师快速解决IC618环境下的DRC验证问题。

weixin_30823001的博客 680

物理与工程中的‘黑话’:Kronecker delta和Levi-Civita符号到底简化了什么?

本文深入解析了物理与工程中常用的Kronecker delta和Levi-Civita符号的简化作用。通过对比传统表示与张量表示,展示了这些符号在向量运算、矩阵迹计算及流体力学模拟中的高效应用,显著提升计算效率和代码可读性。特别适合理论物理和工程数学领域的学习者与从业者。

weixin_27215403的博客 399

搞定mysql的 行转列(7种方法) 和 列转行

一、行转列1、使用case…when…then 2、使用SUM(IF()) 生成列3、使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行4、使用SUM(IF()) 生成列,直接生成汇总结果,不再利用子查询5、使用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total6、动态查询列值不确定的情况7、合并字段显示:group_concat()二、列转行 ————————————————即将原本同一列下多行的不同内容作为多个字段,输出对应内容

qq_58148854的博客 5万+

大麦网抢票协议逆向分析:从Web安全到高并发风控实战

在当今高并发Web应用场景下,理解网络协议交互与反爬虫机制是后端开发和系统架构设计的核心技能。其基本原理涉及客户端与服务器之间通过HTTP/HTTPS协议进行数据交换,关键环节包括请求参数构造、身份认证与会话管理。这一技术的核心价值在于保障系统安全与公平性,通过动态令牌、签名算法及设备指纹等多重手段,有效抵御自动化脚本攻击。典型应用场景包括票务系统、电商秒杀等需要严格管控资源访问的高并发业务。本文以热门票务平台为例,深入剖析其**请求链与令牌体系**及**行为生物特征分析**等风控策略,通过实战演示协议逆向

weixin_34354173的博客 453

mysql动态行转列详解

2、插入数据 数据少可以多改变userid后多插入一些。1、建立一个学生对应分数的表。4、准备开始写sql语句。3、得到一张有数据的表。

zhilo1231的博客 1266

全国大学校园网—拓扑图欣赏

全国大学网络拓扑图(一百张) 典型十张 1、 中央财经大学 2、国防科技大学 3、济南大学 4、西安石油大学 5、南通大学IPV6网络 6、中国矿业大学 7、青海师范大学 8、内蒙古科技大学 9、三峡大学 10、中共江苏省党校 剩余90张 点赞、评论获取 ...

LiBai'S BLOG 5万+

手把手教你用OpenClaw+飞书打造论文写作AI助手(附踩坑实录)

面对几十篇文献,逐一阅读摘要都费时。我:“请提取桌面‘论文参考文献’文件夹中所有PDF的摘要,整理成表格,包含:论文标题、作者、发表年份、核心方法、主要结论。AI助手:“正在处理...已提取18篇论文摘要,汇总表格已保存到桌面‘文献摘要汇总.xlsx’。这比我自己一个个打开PDF复制粘贴快了不止100倍。OpenClaw+飞书的组合,让AI真正成为了我的“数字员工”。虽然配置过程有些曲折,但看到它在飞书里回应指令、帮我处理繁琐工作时,那种成就感无可替代。如果你也在准备论文,不妨试试这套方案。记住,

AcademicIdeas的博客 1041

mysql中动态行转列

mysql行转列

Li_789的博客 455

PyMuPDF为PDF文件添加注释

我将介绍如何使用PyMuPDF库来为PDF文件添加注释,包括文本注释、高亮注释、下划线注释等15种注释的使用方法。

布啦啦 2244

mysql 行转列_MySQL实验--静态行转列->动态行转列->存储过程使用行转列

概述今天主要用一个实验来介绍一下在使用行转列的过程及相关实验。下面演示一下。创建表这里我用一个比较简单的例子来说明,也是行转列的经典例子,就是学生的成绩三张表:学生表、课程表、成绩表1、学生表就简单一点,学生学号、学生姓名两个字段CREATE TABLE `student` ( `stuid` VARCHAR(16) NOT NULL COMMENT '学号', `stunm` VARCHAR(2...

weixin_39766910的博客 211

YOLOv26与其他目标检测算法的对比分析

本文对YOLOv26与其他主流目标检测算法进行了全面对比分析。YOLOv26在COCO数据集上达到96.0% mAP@0.5和79.0% mAP@0.5:0.95,显著优于其他YOLO系列算法,同时保持85FPS的推理速度和35MB的轻量级模型。相比两阶段算法(如Faster R-CNN),YOLOv26在速度、模型大小和内存占用方面优势明显;相比Anchor-free算法(如CenterNet),YOLOv26在速度和模型压缩方面更优。其核心创新包括动态锚框分配、自注意力机制和轻量级设计,使其成为适用于复

一键难忘的博客 994

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL存储过程中使用动态行转列

转载自:MySQL存储过程中使用动态行转列数据表结构这里我用一个比较简单的例子来说明,也是行转列的经典例子,就是学生的成绩三张表:学生表、课程表、成绩表学生表就简单一点,学生学号、学生姓名两个字段CREATE TABLE `student` ( `stuid` VARCHAR(16) NOT NULL COMMENT '学号', `stunm` VARCHAR(20) NOT NU...

阿仁的博客 270

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

mysql存储过程返回结果集_如何在mysql数据库中用存储过程实现动态行转列?

概述今天主要用一个实验来介绍一下在使用行转列的过程及相关实验。下面演示一下。创建表这里我用一个比较简单的例子来说明,也是行转列的经典例子,就是学生的成绩三张表:学生表、课程表、成绩表1、学生表就简单一点,学生学号、学生姓名两个字段CREATE TABLE `student` ( `stuid` VARCHAR(16) NOT NULL COMMENT '学号', `stunm` VARCHAR(2...

weixin_39811842的博客 230

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mysql查询行转列groupby_SQL查询行转列

---1、最简单的行转列/*问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94想变成(得到如下结果):姓名 语文 数学 物理李四 74 84 94张三 74 83 93*/--测试用IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GOc...

weixin_35215225的博客 1143

Mysql存储过程与Mybatis实现动态行转列

Mysql存储过程与Mybatis实现动态行转列

m0_60845963的博客 2102

MySQL存储过程的动态行转列

01前言在数据库存储格式和报表展现形式不同的时候,需要进行一下行转列的操作,开始也在网上找到一些MySQL行转列的例子,但大部分都是静态的,要么就是不知所云,说的不是很清楚,下面我以一个...

独行侠梦的博客 436

Mysql 动态实现 行转列 分析

说明 : 1、使用光标(游标),循环动态拼接 sql。 2、存储过程动态行转列。 3、用于示例,使用光标动态赋值,循环拼接。   表结构:   存储过程脚本 :   DELIMITER // CREATE PROCEDURE getAnnounceInfo(IN stuName VARCHAR(100)) BEGIN # 声明局部变量 DECLAR...

STRANGE-P 的博客 748

mysql动态行转列函数_MySQL存储过程当中使用动态行转列

本文介绍的实例成功的实现了动态行转列。下面我以一个简单的数据库为例子,说明一下。java数据表结构sql这里我用一个比较简单的例子来讲明,也是行转列的经典例子,就是学生的成绩三张表:学生表、课程表、成绩表数据库学生表就简单一点,学生学号、学生姓名两个字段函数CREATE TABLE `student` (`stuid` VARCHAR(16) NOT NULL COMMENT '学号',`stun...

weixin_33773996的博客 872

MySQL行转列与列转行,存储过程动态行转列

一、创建表插入一些示例数据 create table score( id bigint(20) auto_increment, sname varchar(255) comment "学生姓名", cname varchar(255) comment "课程名称", score int(11) comment "分数", primary key(id) )engine=innodb; ...

技术是修行,跑步亦是修行。 1498

mysql实现动态行转列,不用存储过程,mybatis

动态行转列,网上很多例子都是通过存储过程来实现,其实这样挺麻烦,可以通过现在代码中拼接字符串方式,实现. 使用场景,当需要行转列查询时,如果转化后列是动态的,可以先将列的字段去重查询出来,然后在java代码中进行sql拼装,然后再作为参数传入sql,注意mybatis去参数的时候用${param},才能编译,不能使用#{param}方式,不然会当成字符串不会进行编译. 实例,在不确...

java_fisher的博客 3077

mysql 存储过程 行转列_MySQL存储过程的动态行转列

MySQL存储过程中使用动态行转列最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个问题了。而这一次必须要直面这个问题了,奈何我是那么的不想看,可项目不能因为这个问题卡在这,只好好好找资料看如何解决这个问题。开始也在网上找到一些MySQL行转列的例子,但大部分都是静态的,要么就是不知所...

weixin_34043280的博客 355

MySQL行转列函数

原文链接: http://www.360doc.com/content/18/0525/20/14808334_757019563.shtml 概述 好久没写SQL语句,今天看到问答中的一个问题,拿来研究一下。 问题链接:关于Mysql 的分级输出问题 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列。数据表里面数据如下图,使用姓名+课程作为联合主键(...

死亡阿黑 2万+
上一篇: mysql实现动态行转列,不用存储过程,mybatis
下一篇: nginx 根据cookie分流
Fisher1229
博客等级 码龄9年 6粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值