oracle行转列方法集合汇总(推荐!) |
您所在的位置:网站首页 › oracle字段转字符串 › oracle行转列方法集合汇总(推荐!) |
oracle行转列方法集合汇总(推荐!)
wm_concat、listagg、xmlagg、pivot函数 一、wm_concat函数(oracle12g版本开始不支持) 语法: select 需要分组的字段,wmsys.wm_concat(distinct 需要行转列合并展示的字段) from 表名 group by 需要分组的字段; 实战:查询各年级涉及的班级,多个班级默认用“,”隔开按一行合并展示。 select * from CLASS_STATISTICS;二、listagg函数 语法: select 需要分组的字段,listagg(需要行转列合并展示的字段,';')within group(order by 需要行转列合并展示的字段) from 表名 group by 需要分组的字段; 实战:查询各年级涉及的班级,多个班级用“;”隔开按一行合并展示。 select GRADE,listagg(CLASS,';')within group(order by CLASS) from CLASS_STATISTICS group by GRADE;将group by换成over(partition by),不会去重 select GRADE,listagg(CLASS,';')within group(order by CLASS) over(partition by GRADE) from CLASS_STATISTICS;三、xmlagg函数(解决listagg函数字符串拼接过长问题) 语法: select 需要分组的字段,xmlagg(xmlparse(content 需要行转列合并展示的字段||';' wellformed) order by 需要行转列合并展示的字段).getclobval() from 表名 group by 需要分组的字段; 实战:查询各年级涉及的班级,多个班级用“;”隔开按一行合并展示。 select GRADE,xmlagg(xmlparse(content CLASS||';' wellformed) order by CLASS).getclobval() from CLASS_STATISTICS group by GRADE;使用rtrim(字段名,'字符'),去掉结尾多出来的“;” select GRADE,rtrim(xmlagg(xmlparse(content CLASS||';' wellformed) order by CLASS).getclobval(),';') from CLASS_STATISTICS group by GRADE;使用dbms_lob.substr(字段名,截取字段长度,从第几位开始截取),将大字段clob字段转换为字符串展示 select GRADE,dbms_lob.substr(rtrim(xmlagg(xmlparse(content CLASS||';' wellformed) order by CLASS).getclobval(),';'),1000,1) from CLASS_STATISTICS group by GRADE;四、pivot函数(拆分列) 语法: select * from 表名 pivot(聚合函数(需要按行展示的字段) for 需要转列展示的字段 in ('内容1' AS 字段别名1,'内容2' AS 字段别名2,'内容n' AS 字段别名n)); 实战:将年级按列展示其学生人数。 select * from GRADE_STATISTICS;总结 关于oracle行转列方法集合汇总的文章就介绍至此,更多相关oracle行转列方法内容请搜索编程宝库以前的文章,希望以后支持编程宝库! 下一节:解决maven不能下载oraclejdbc驱动的问题Oracle数据库maven不能下载oracle jdbc驱动问题在mavne工程中的pom.xml文件中添加Oracle JDBC驱动:例如: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |