[发明专利]一种通用的行转列处理方法在审
申请号: | 202010562264.1 | 申请日: | 2020-06-18 |
公开(公告)号: | CN111708784A | 公开(公告)日: | 2020-09-25 |
发明(设计)人: | 锁晶晶 | 申请(专利权)人: | 辽宁振兴银行股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 郑州欧凯专利代理事务所(普通合伙) 41166 | 代理人: | 毛瑞官 |
地址: | 110000 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通用 行转列 处理 方法 | ||
本发明公开了一种通用的行转列处理方法,包括如下步骤:S1统计小提琴班在20190401‑20190410每个人的成绩;S2先通过||连接符,将需要进行行转列的批量生成case when语句;S3通过wm_concat(列名)并再次用连接符||,将批量生成的每一行case when代码显示在一行中;S4将第二步的结果在数据库查询窗口中运行,即可实行全部的行转列。本发明不需要一个个将列名列出,通过简单的Sql语句可生成所有列名的case when语句,同时,避开了对多数据类型列的处理,可统一进行行转列。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种通用的行转列处理方法。
背景技术
建模人员在最开始处理数据的时候,通常都会碰到需要在数据库中进行行转列,目前大家对行转列的处理通常有两种:
一、case when语句:对需转成列的数目比较少的情况下,大家通常采用case when将需转成列的名写在Sql语句中再通过case进行判断处理。那么对列数较多,这种一个个将列名列出来的方式显然效率太低。
二、PIVOT函数:PIVOT函数是对case when的扩展,但他需要列的数据类别一致,比如都为数值型,对既有数值,又有字符串类型的,PIVOT函数的处理就没那么高效了,要先进行数据类型处理。
因此,我们提出并实践一种通过使用连接符||和wm_concat()函数批量生成Sql语句的方式,简洁高效的进行行转列处理。
发明内容
基于背景技术存在的技术问题,本发明提出了一种通用的行转列处理方法。
本发明提出的一种通用的行转列处理方法,包括如下步骤:
S1统计小提琴班在20190401-20190410每个人的成绩;
S2先通过||连接符,将需要进行行转列的批量生成case when语句;
selectdistinct'max(casewhenA.name='||””||A.name||”” ||'then A.ods_value end)'as lna
from A
where A.event='小提琴班'
and A.data_date='20190401'
and A.data_date='20190410'
运行结果:
select max(case when A.name='a'then A.ods_value end),
select max(case when A.name='b'then A.ods_value end),
select max(case when A.name='c'then A.ods_value end),
select max(case when A.name='d'then A.ods_value end),
S3通过wm_concat(列名)并再次用连接符||,将批量生成的每一行case when代码显示在一行中;
select'select event,'||wm_concat(lna)
||'FROM A'
||'where data_event='||””||'小提琴班'||””
||'and data_date='||””||'20190401'||””
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辽宁振兴银行股份有限公司,未经辽宁振兴银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010562264.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种新型自动化环保伸缩装置
- 下一篇:环保多功能高效专用车