Mysql 逗号分隔行列转换总结】的更多相关文章

方法一 存储过程实现: -- 修改结束符,防止在mysql命令行中默认分号直接运行 delimiter $$ -- 创建一个计算拆分后字符串的个数函数 drop function if exists calc_length $$ create function calc_length(str varchar(200), splitstr varchar(5)) returns int(11) begin  return length(str)-length(replace(str, splits…
前言: 最近又玩起了sql语句,想着想着便给自己出了一道题目:“行列转换”.起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用oracle数据库当中的一些便捷函数进行处理,比如”pivot”.那么,在Mysql环境下如何处理? 自己举了个小例子: sql代码实现: -- Step1:建表并插入数据 -- Step2:中间转换,即“二维转一维”得到一维表. -- Step3:利用IF判断并“group by”即可得到目标结果表. -- 加载 use test; create table s…
行列转换常见场景 由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式.即同一个列中存储了多个属性值(具体结构见下表). 这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果. 表数据: ID Value 1 tiny,small,big 2 small,medium 3 tiny,big 期望得到结果: ID Value 1 tiny 1 small 1 big 2 small 2 medium 3 tiny 3 big 具体方法 先从一个具体实例开始我们的…
一.第一种 原数据表 转换后 DROP TABLE IF EXISTS tempdynamic; CREATE TEMPORARY TABLE tempdynamic ( SELECT p.fsPaymentName,sr.fsPaymentId,sh.fsShiftName,SUM(sr.fdReceMoney) as AmtTotal FROM tbsell as s INNER JOIN tbSellReceive as sr ON s.fsSellNo=sr.fsSellNo AND s…
今天一个同学遇到一个问题问我了,由于本人平时学习的mysql比较基础,确实没解决,后来google了一下,才知道是sql的一种技法[行列转换],话不多说先上图: 想得到下面的结果: +------+-------+-------+-------+-------+| 年份 | 1月 | 2月 | 11月 | 12月 |+------+-------+-------+-------+-------+| 2014 | 0 | 0 | 20000 | 21000 || 2015 | 30000 | 60…
create table score( name ), math int, english int ); ,); ,); ,); ,); SHOW tables; SELECT * from score; --行列转换: select c2 as '课程', )) '甲', )) '乙', )) '丙', )) '丁' from( select name c1,'math' c2,math c3 from score GROUP BY name union select name,'englis…
行列转换对于工作还是学习中总是不可避免的会遇到(虽然本人还尚未工作,萌萌哒的学生一枚),解决的方法也有很多,我这里就总结一下我所想解决的问题以及怎么去解决的方法, 可能网上已经有很多类似的方法了,有的比我的可能会更好,就当我记录一下自己的学习经历吧.这里我们列举一个关于股票的每日入账出账做一个统计然后整理数据,虽然例子可能不太合理, 但是不要太执着于这些细节,能说明问题就好,傻笑ing..... 1 列转行:按照某一列分组,将另一列作为行时列名可数,不变. 什么意思呢?话说多了反而不懂,放两张图…
用SQL行列转换实现数据透视的一些思考 摘要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现.该解决思路及函数实现可用于Oracle数据库开发中行列转换.数据透视等     用SQL行列转换实现数据透视的一些思考 摘  要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现.该解决思路及函数实现可用于Oracle数据库开发中行…
注:本文使用的数据库表为oracle自带scott用户下的emp,dept等表结构. 通过一个例子来说明行列转换: 需求:查询每个部门中各个职位的总工资 按我们最原始的思路可能会这么写:       这种结果虽然也能满足要求,但是极难阅读,我们使用oracle中的decode()函数进行改写: 这样的话就实现了需求要求的功能,其实这就是一种行列转换的方式,这是通过decode()函数实现的,是oracle独有的一个函数,如果使用通用的sql语句,那么该如何实现上面的查询结果呢?当然我们可以通过嵌…
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (-) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2…