oracle 的行列转换函数,Oracle行列转换函数
VM_CONCAT
vm_concat可以用来进行行转列,默认以逗号分隔,可通过vm_concat(name,’,’,’|’)修改为|1
2
3
4
5
6
7
8
9
10
11
12
13SQL> select * from test
id name
---- -----
1 a
2 b
1 c
2 d
SQL> select id,wm_concat(name) from test group by id
id name
---- ------
1 a,c
2 b,d
Oracle 12C之后该函数已经不再支持了
LISTAGG
LISTAGG是Oracle 11g中推出的函数,也可以用来做行转列
1
2
3
4
5
6
7
8
9
10
11
12
13SQL> select distinct DEPTNO,listagg(ENAME,';') WITHIN GROUP (order by ename) over (PARTITION BY DEPTNO) from SCOTT.EMP;
DEPTNOLISTAGG(ENAME,';')WITHINGROUP(ORDERBYENAME)
------- ---------------------------------------------
10 CLARK;KING;MILLER
20 ADAMS;FORD;JONES;SCOTT;SMITH
30 ALLEN;BLAKE;JAMES;MARTIN;TURNER;WARD
SQL> select distinct DEPTNO,listagg(ENAME,';') WITHIN GROUP (order by ename) from SCOTT.EMP group by DEPTNO;
DEPTNOLISTAGG(ENAME,';')WITHINGROUP(ORDERBYENAME)
------- ---------------------------------------------
10 CLARK;KING;MILLER
20 ADAMS;FORD;JONES;SCOTT;SMITH
30 ALLEN;BLAKE;JAMES;MARTIN;TURNER;WARD
19C才开始支持distinct去重
XMLAGG
XMLAGG是一个聚合函数,可以将数据聚集成XML格式数据。XMLAGGf返回的类型为clob,最大字节长度为32767,因此当行转列字符长度超出限制时可以采用改方式来避免该错误。
1
2
3
4
5
6
7
8
9
10
11
12
13SQL> select DEPTNO,XMLAGG(XMLELEMENT(CONTENT,ename||',') ORDER BY ename).EXTRACT('//text()').getclobval() as ename from scott.emp group by DEPTNO;
DEPTNOENAME
------- -------------------------------------
10 CLARK,KING,MILLER,
20 ADAMS,FORD,JONES,SCOTT,SMITH,
30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD,
SQL> select DEPTNO,xmlagg(xmlparse(content ENAME ||',' wellformed) order by ENAME).getclobval() as ename from SCOTT.EMP GROUP BY DEPTNO;
DEPTNOENAME
------- -------------------------------------
10 CLARK,KING,MILLER,
20 ADAMS,FORD,JONES,SCOTT,SMITH,
30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD,
PIVOT与UNPIVOT
Oracle 11g中又加入了两个函数:PIVOT和UNPIVOT,用于进行行专列和列转行,与SQL Server中同名函数功能一致
基础数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16SELECT job,deptno,SUM(sal) AS sum_sal
FROM emp
GROUP BY job,deptno
ORDER BY job,deptno;
JOB DEPTNO SUM_SAL
--------- ---------- ----------
ANALYST 20 6000
CLERK 10 1300
CLERK 20 1900
CLERK 30 950
MANAGER 10 2450
MANAGER 20 2975
MANAGER 30 2850
PRESIDENT 10 5000
SALESMAN 30 5600
行转列
1
2
3
4
5
6
7
8
9
10
11
12
13select *from (select sal,deptno,job from scott.emp)
pivot (
sum(sal)
for deptno in(10,20,30,40)
);
JOB 10 20 30 40
---------- ------ ---- ---- ----
ANALYST - 6000 - -
CLERK 1300 1900 950 -
SALESMAN - - 5600 -
MANAGER 2450 2975 2850 -
PRESIDENT 5000 - - -
UNPIVOT和PIVOT相反,用于进行列转行
oracle 的行列转换函数,Oracle行列转换函数相关推荐
- oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)
一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...
- oracle listagg支持,PostgreSQL行列转换(兼容oracle listagg)
oracle11g开始支持的listagg函数替代了wmconcat来实现行列转换的功能. listagg函数的用法: oracle行列转换例子: -建表https://www.cndba.cn/fo ...
- oracle 天转换成月函数_oracle 日期转换格式 函数
1 oracle对时间格式的数据存贮 oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,与查询时显示的时间格式无关,具体哪个字节表示什么,我不太清楚,请高手补充.存 ...
- mysql rollup函数_Mysql,Oracle使用rollup函数完成行列统计
昨天突然在 一篇博客中看到了Mysql也有rollup函数,原博文使用了rollup进行行列统计,原博文链接如下: 本博文主要是记录下mysql和oracle使用rollup函数进行行列统计,内容比较 ...
- oracle中转换函数,Oracle中的转换函数
Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...
- oracle中blob转换,BLOB转换为CLOB的函数(oracle中执行)
BLOB转换为CLOB的函数(oracle中执行) CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS v_cl ...
- oracle日期转数值的函数,oracle数据库内置函数之数值函数、字符函数、日期函数、转换函数及其在查询语句中的运用...
数值函数: 1.四舍五入函数round() from dual:一行一列组成 select round(23.4) from dual;--默认不写m表示m为0 select round(23.45, ...
- oracle 纵列 转 横列,oracle sql小结(主要讲横列转换的例子)decode 以及case
--建表 create table kecheng ( id NUMBER, name VARCHAR2(20), course VARCHAR2(20), score NUMBER ); --插入数 ...
- 深度解析:Oracle数据库SYSDATE到PostgreSQL数据库最佳转换
本文讨论了在Amazon RDS和Aurora 中使用PostgreSQL数据库时,与日期/时间相关的函数,并确定PostgreSQL数据库里的clock_timestamp()函数与Oracle中的 ...
最新文章
- 高分辨率、实时的手持物体360°三维模型重建结构光技术
- python 文件操作的模块_Python之文件操作修改模块
- Navicat数据库非常实用的技巧 (create_time、edit_time 设置默认值和自动更新)
- ./ 表示当前路径 ../ 表示上一级目录路径
- acer清理工具 clear下载_免流量工具聚合下载,包含全部工具
- RTT的内存管理篇——为什么要进行内存管理?
- JMH 性能测试框架
- 加速度传感器与车祸报警解决方案
- 朗沃20140414
- 【AtCoder】ARC065
- winform调用fastreport制作报表(三)绑定数据
- 小米5miui10android,小米8 Miui10.3 最新稳定版(10.3.5.0 9.0) 快过闪电 AI 人性化设置 冰箱 流畅 实用...
- CentOS 7.9命令行配置有线网卡
- led灯条串联图_LED灯如何串联?
- pod 文件管理服务器,k8s中pod的状态管理
- SpringBoot、SpringCloud版本中GA/PRE/SNAPSHOT的详解
- springboot 多任务并行执行
- 华南理工计算机电路基础试题,2017年华南理工大学计算机电路基础.doc
- 等保2.0 Windows主机测评过程
- UI的四个实用配色网站