oracle行转列方法集合汇总(推荐!)
作者:大毛发沙海 发布时间:2024-01-12 19:42:14
wm_concat、listagg、xmlagg、pivot函数
一、wm_concat函数(oracle12g版本开始不支持)
语法:
select 需要分组的字段,wmsys.wm_concat(distinct 需要行转列合并展示的字段) from 表名 group by 需要分组的字段;
实战:查询各年级涉及的班级,多个班级默认用“,”隔开按一行合并展示。
select * from CLASS_STATISTICS;
select GRADE,wmsys.wm_concat(distinct CLASS) from CLASS_STATISTICS group by GRADE;
二、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;
select * from GRADE_STATISTICS pivot(sum(STUDENTS_CNT) for GRADE in ('一年级' AS 一年级,'二年级' AS 二年级,'三年级' AS 三年级,'四年级' AS 四年级));
来源:https://blog.csdn.net/weixin_40543389/article/details/127384313
猜你喜欢
- 分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理。效果:代码:1
- 本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下:写装饰器装饰器只不过是一种函数,接收被装饰的可调用对象作为它的唯一参数
- 美化主要表现在鼠标放到菜单上后(即鼠标悬停)的效果,这里首先介绍几个经常用到的CSS属性:backgr
- 1. 将图片存入数据库关于数据库基本操作的学习,请参见这一篇文章:https://www.jb51.net/article/167141.h
- 目录为什么需要分区?分区的策略分区隐患为什么需要分区?当面对巨大的数据表的时候,至少有一件事情是确定的,表太大了以至于每次查询的时候我们没法
- 通过上篇文章给大家介绍了SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(上) ,说了一下sys.dm_e
- MySQL基础知识第一期,如何远程访问MySQL数据库设置权限方法总结,讨论访问单个数据库,全部数据库,指定用户访问,设置访问密码,指定访问
- 请求地址var ( requestGetURLNoParams string = "http://httpbin.org/get&
- 自己从工艺品设计到平面设计到网络设计,虽然设计原则不离其宗,但经验下来的心得告诉自己,设计媒介的变化带来很多媒介自身的特殊性,下面总结下网站
- 利用ResNet18进行手写数字识别先写resnet18.py代码如下:import torchfrom torch import nnfr
- 前言本文主要给大家分享了一些简单的Python练习题,对学习python的新手们来说是个不错的练习问题,下面话不多说了,来一起看看详细的介绍
- 引言上一篇介绍了axios的简单封装,知道了axios * 的应用场景和方法,今天来看一下对于响应时间过长且请求次数过高的情况 * 如何处理
- 调用sklearn的model_selection时,发现sklearn中没有model_selection的模块。经过检查,发现anaco
- 网上找了半天都找不到好用的PyQt5无边框窗口的实现,借鉴部分前辈的窗口拖放代码,自己实现了一下无边框窗口,问题可能还有一点,慢慢改吧 先做
- 简单的LSTM问题,能够预测一句话的下一个字词是什么固定长度的句子,一个句子有3个词。使用one-hot编码各种引用import keras
- 本文实例讲述了Python实现简单的获取图片爬虫功能。分享给大家供大家参考,具体如下:简单Python爬虫,获得网页上的照片#coding=
- 刚开始学习python,python相对于java确实要简洁易用得多。内存回收类似hotspot的可达性分析, 不可变对象也如同java得I
- 本文实例讲述了PHP删除数组中指定值的元素。分享给大家供大家参考,具体如下:测试数组如下://这是一个测试数组$testArr = arra
- 摘要:本文主要是在pandas中如何对字符串进行切分。我们考虑一下下面的应用场景。这个是我们的数据集(data),可以看到,数据集中某一列(
- 1.单列运算在Pandas中,DataFrame的一列就是一个Series, 可以通过map来对一列进行操作:df['col2