`

MySQL动态行转列_zhuan

阅读更多

网上的都是一些静态的,用CASE WHEN结构实现。所以我写了一个动态的。




SP 代码:

DELIMITER $$

DROP PROCEDURE IF EXISTS `test` . `sp_row_column_wrap` $ $

CREATE DEFINER= `root` @ `localhost` PROCEDURE `sp_row_column_wrap` ( IN $schema_name varchar ( 64) ,
IN $table_name varchar ( 64) )
BEGIN
  declare cnt int ( 11) ;
  declare $table_rows int ( 11) ;
  declare i int ( 11) ;
  declare j int ( 11) ;
  declare s int ( 11) ;
  declare str varchar ( 255) ;
  -- Get the column number of the table
  select count ( 1) from information_schema. columns where table_schema= $ schema_name and table_name= $ table_name into cnt;
  -- Get the row number of the table
  select table_rows from information_schema. tables where table_schema = $schema_name and table_name= $ table_name into $table_rows;
  -- Check whether the table exists or not
  drop table if exists test. temp;
  create table if not exists test. temp ( `1` varchar ( 255) not null ) ;
  -- loop1 start
  set i = 0;
  loop1:loop
    if i = $table_rows-1 then
      leave loop1;
    end if;
    set @ stmt1 = concat ( 'alter table test.temp add `' , i+ 2, '` varchar(255) not null' ) ;
    prepare s1 from @ stmt1 ;
    execute s1;
    deallocate prepare s1;
    set @stmt1 = '';
    set i = i + 1;
  end loop loop1;
  -- loop1 end;
  set s = 0;
  -- loop2 start
  loop2:loop
  -- leave loop2
    if s= cnt then
      leave loop2;
    end if;
    set @ stmt2 = concat ( 'select column_name from information_schema.columns where table_schema="' , $ schema_name,
                        '" and table_name="' , $ table_name, '" limit ' , s, ',1 into @temp;' ) ;
    prepare s2 from @ stmt2 ;
    execute s2;
    deallocate prepare s2;
    set @stmt2 = '';
    set j= 0;
    set str = ' select ' ;
    -- Loop3 start
    loop3:loop
      if j = $table_rows then
        leave loop3;
      end if;
      set @ stmt3 = concat ( 'select ' , @ temp , ' from ' , $ schema_name, '.' , $ table_name, ' limit ' , j, ',1 into @temp2;' ) ;
      prepare s3 from @ stmt3 ;
      execute s3;
      set str = concat ( str, '"' , @ temp2 , '"' , ',' ) ;
      deallocate prepare s3;
      set @stmt3 = '';
      set j = j+ 1;
    end loop loop3;
    set str = left ( str, length ( str) - 1) ;
    -- insert new data into table
    set @ stmt4 = concat ( 'insert into test.temp' , str, ';' ) ;
    prepare s4 from @ stmt4 ;
    execute s4;
    deallocate prepare s4;
    set @stmt4 = '';
    set s= s+ 1;
  end loop loop2;
END $ $

DELIMITER ;




以下是测试结果:
======
select * from a;
select * from b;
select * from salary;

call sp_row_column_wrap('test','a');
select * from test.temp;
call sp_row_column_wrap('test','b');
select * from test.temp;
call sp_row_column_wrap('test','salary');
select * from test.temp;

query result(2 records)

aid title
1 111
2 222

 

query result(3 records)

bid aid image time
1 2 1.gif 2007-08-08
2 2 2.gif 2007-08-09
3 2 3.gif 2007-08-08

 

query result(7 records)

id cost des Autoid
1 10 aaaa 1
1 15 bbbb 2
1 20 cccc 3
2 80 aaaa 4
2 100 bbbb 5
2 60 dddd 6
3 500 dddd 7

 

query result(2 records)

1 2
1 2
111 222

 

query result(4 records)

1 2 3
1 2 3
2 2 2
1.gif 2.gif 3.gif
2007-08-08 2007-08-09 2007-08-08


query result(4 records)

1 2 3 4 5 6 7
1 1 1 2 2 2 3
10 15 20 80 100 60 500
aaaa bbbb cccc aaaa bbbb dddd dddd
1 2 3 4 5 6 7
 
分享到:
评论

相关推荐

    pdfzhuantxt.rar_pdf txt_pdf zhuan txt_pdfzhuant_pdf转txt_txt转pdf

    PDF转TXT格式是一种常见的文档转换需求,特别是在处理大量文本数据时。这个名为“pdfzhuantxt.rar”的压缩包提供了一个小程序,能够帮助用户将PDF文件转换为纯文本(TXT)格式。PDF(Portable Document Format)是...

    编码器计数

    bai_zhuan=(int)zhuan/100; shi_zhuan=(int)zhuan0/10; ge_zhuan=(int)zhuan; write_data(table[bai_fen]); write_data(table[shi_fen]); write_data(table[ge_fen]); write_data(table[12]); write...

    XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED

    "XUAN-ZHUAN-led.zip_旋转LED_旋转LED 自适应_自适应旋转LED"这个压缩包文件内容是关于实现旋转LED自适应转速的程序,其核心目标是让LED屏幕上的字幕能够流畅地滚动,并根据设备的转速自动调整滚动速度,以保持最佳...

    Map_out.rar_Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out

    "o_mapgis_mapgis noteo_mapgis"可能是开发者自定义的某个工具或模块的名称,而"zhuan_jpg"则明确指出了转换的目标格式是JPG。 MapGIS是一款广泛应用于地理信息系统(GIS)的专业软件,它提供了丰富的地图处理、...

    C#代码重构 - Mr.Fu _Zhuan.mobi

    重构是迅速发现并修复有问题的代码的一种高效的方式。在《代码重构(c # & asp.net版)》中首次提供了在c#和asp.net中进行重构的专业方法,您将学习如何运用重构技术管理和修改代码

    z zhuan sec_EH4_EH4Z文件转SEC文件_

    标题中的"z zhuan sec_EH4_EH4Z文件转SEC文件_"表明我们正在处理一个涉及到将EH4或EH4Z格式的文件转换为SEC格式的议题。这个过程可能涉及到特定的工具、编程语言或者协议,尤其是在嵌入式系统中,这些文件格式通常与...

    zhuan_java_untilgw8_android_

    标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...

    2_SIMULINK_

    5. `by_wang_zhuan_zhuan.m`:可能是一个用户自定义的函数,由"wang_zhuan_zhuan"编写,可能与傅里叶变换或者Simulink模型的某个特定部分有关。 6. `matlab.mat`:这是一个MATLAB的数据文件,可能存储了仿真过程中...

    zhuan-su-eliang.rar_labview 测_labview 测速_labview测速_labview转速测量_转

    在给定的“zhuan-su-eliang.rar”压缩包中,包含了一个名为“zhuan su eliang.vi”的虚拟仪器(VI),这显然是一款用于转速测量的应用程序。 转速测量是机械工程、汽车工业、电力系统等领域中常见的技术需求。...

    gssdgv-zhuan-ke-master_java_

    《蚂蚁集团开源的Java研发框架——gssdgv-zhuan-ke-master_java_详解》 在现代软件开发中,高效、稳定且易维护的框架是项目成功的关键因素之一。蚂蚁集团作为全球知名的金融科技公司,其开源的Java研发框架——...

    将powerDesigner的概念模型转换成物理模型,生成sql文件导入数据库.

    3. 在“转换到物理模型”对话框中,选择要生成的数据库管理系统(DBMS),例如 MySQL、Oracle 或 SQL Server。 4. 选择要生成的数据库对象,例如表、视图、存储过程等。 5. 点击“转换”按钮,PowerDesigner 将根据...

    Cadence转Altium Designer_transform

    Cadence转Altium Designe allegro .brd文件转成AD .pcbdoc文件 1、将.brd文件生成.alg文件 2、使用AD导入向导将.alg文件生成 .pcbdoc文件 由于PCB工程师或者硬件工程师使用的软件不同,经常需要在各种PCB绘制软件...

    rslidar雷达数据转velodyne数据功能包

    `rslidar雷达数据转velodyne数据功能包`,正如其名,是一个专为将RoboSense LiDAR的数据转换成与Velodyne兼容格式的工具。这个功能包主要针对的是那些希望将rslidar数据应用于使用Velodyne数据处理流程的系统或算法...

    nuScenes数据集3D转2Dpython源码

    nuScenes数据集是一个广泛使用的大型多模态自动驾驶数据集,包含丰富的3D感知数据,如激光雷达点云、摄像头图像、车辆动态信息等。 首先,我们需要理解3D转2D的基本原理。在自动驾驶系统中,3D物体检测通常是通过...

    zhuan 2.zip

    在这个名为"zhuan 2.zip"的压缩包中,包含了一个支持移动端的转盘抽奖程序。这个程序的核心是通过JavaScript实现,使得用户可以通过点击来触发抽奖过程,从而增加用户体验的趣味性和参与度。 首先,我们来看“转盘...

    ban-zhuan.zip_JAVA穷举法搬砖_搬砖_用JAVA穷举法

    在给定的“ban-zhuan.zip_JAVA穷举法搬砖”主题中,我们面对的是一个数学问题,该问题与实际的砖块分配有关。36块砖需要36个人来搬运,其中包括男性、女性和小孩,他们各自有不同的搬运能力。男性每次能搬4块砖,...

    zhuan8.rar_kinect_人工势场法

    主要用于路径规划,程序读入之初,需要先读入Kinect相机拍摄的深度图像。

    VC工程转Qt工程文件的工具

    本文将详细介绍一个名为"VC工程转Qt工程文件的工具",它能帮助开发者实现这一转换过程。 该工具的核心功能是将VC的DSP(Digital Signal Processing,数字信号处理)工程文件转换为Qt的Pro工程文件。DSP工程文件是...

    L297_L298芯片混合式步进电机驱动器设计原理图及例程

    `zheng_zhuan`和`fan_zhuan`控制电机正转和反转,`jia_su`和`jian_su`则用于加速和减速。加速函数`jia()`减少速度变量Y的值,减速函数`jian()`增加Y的值,但都设有边界条件,以防止Y值超出范围。 总结来说,L297_L...

    ann(zhuan).rar_ANN

    本人转的别人写的人工神经网络的学习体会与感受,真是受益匪浅啊!

Global site tag (gtag.js) - Google Analytics