oracle listagg支持,PostgreSQL行列转换(兼容oracle listagg)
oracle11g开始支持的listagg函数替代了wmconcat来实现行列转换的功能。
listagg函数的用法:
oracle行列转换例子:
—建表https://www.cndba.cn/foucus/article/3929https://www.cndba.cn/foucus/article/3929
SQL> create table b (id number,name varchar2(20));
Table created.
insert into b values(1,'zhang');
insert into b values(1,'wang');
insert into b values(2,'li');
insert into b values(2,'zhao');
SQL> select id,LISTAGG(name,',') within group(order by name desc) as bb from b group by id;
ID
----------
BB
--------------------------------------------------------------------------------
1
zhang,wang
2
zhao,li
pg中是没有listagg和wmconcat函数的,那么我们要怎么在pg中如何实现同样的功能呢?pg中的string_agg函数可以用来代替listagg,实现同样的功能。https://www.cndba.cn/foucus/article/3929
https://www.cndba.cn/foucus/article/3929
pg行列转换例子:
—建表https://www.cndba.cn/foucus/article/3929
bill=# create table tbl1 (gid int, val text, ts timestamp default clock_timestamp());
CREATE TABLE
—插入数据
bill=# insert into tbl1 values (1,'a'),(1,'b'),(1,null),(2,'test'),(2,'a""b"c'),(3,'fw');
INSERT 0 6
bill=# select * from tbl1;
gid | val | ts
-----+--------+----------------------------
1 | a | 2020-01-05 14:08:42.995435
1 | b | 2020-01-05 14:08:42.995636
1 | | 2020-01-05 14:08:42.995642
2 | test | 2020-01-05 14:08:42.995645
2 | a""b"c | 2020-01-05 14:08:42.995648
3 | fw | 2020-01-05 14:08:42.995717
(6 rows)
—行列转换
逆向聚合,双引号作为quote字符,转义文本内的双引号,空值使用NULL表示。
https://www.cndba.cn/foucus/article/3929
bill=# select gid, string_agg(coalesce('"'||replace(val,'"','/"')||'"','NULL'),',' order by ts desc) from tbl1 group by gid;
gid | string_agg
-----+--------------------
1 | NULL,"b","a"
2 | "a/"/"b/"c","test"
3 | "fw"
(3 rows)
正向聚合,双引号作为quote字符,转义文本内的双引号,空值使用NULL表示。
https://www.cndba.cn/foucus/article/3929
bill=# select gid, string_agg(coalesce('"'||replace(val,'"','/"')||'"','NULL'),',' order by ts) from tbl1 group by gid;
gid | string_agg
-----+--------------------
1 | "a","b",NULL
2 | "test","a/"/"b/"c"
3 | "fw"
(3 rows)
正向聚合,不使用QUOTE,直接去除NULL值https://www.cndba.cn/foucus/article/3929
bill=# select gid, string_agg(val,',' order by ts) from tbl1 group by gid;
gid | string_agg
-----+-------------
1 | a,b
2 | test,a""b"c
3 | fw
(3 rows)
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle listagg支持,PostgreSQL行列转换(兼容oracle listagg)相关推荐
- oracle sys_connect_by_root,CONNECT_BY_ROOT实现行列转换
10g以下版本的ORACLE可以通过DECODE等实现行列转换,[@more@]ORACLE 10g开始新增的CONNECT_BY_ROOT能比较方便地实现行列转换. 例: 有一表ABC,字段信息包括 ...
- Oracle如何实现动态行列转换,Oracle实现行列转换的方法分析
本文实例讲述了Oracle实现行列转换的方法.分享给大家供大家参考,具体如下: 1.固定列数的行列转换 如: sql;"> student subject grade -------- ...
- oracle 的行列转换函数,Oracle行列转换函数
VM_CONCAT vm_concat可以用来进行行转列,默认以逗号分隔,可通过vm_concat(name,',','|')修改为|1 2 3 4 5 6 7 8 9 10 11 12 13SQL& ...
- PostgreSQL hint用法(兼容oracle)
Hint是Oracle数据库中很有特色的一个功能,pg和oracle的优化器一样也是CBO(基于成本的).但是在pg中是没有hint的,但是我们可以去通过设置成本因子,设置优化器开关等方式来" ...
- PostgreSQL隐藏列(兼容oracle)
oracle 12cR1新增了隐藏列的功能,在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件,现在我们可以通过隐藏列来实现这一功能. ...
- postgres oracle 兼容,PostgreSQL嵌套表(兼容oracle)
oracle中的嵌套表是某些行的集合,它在主表中表示为其中的一列.对主表中的每一条记录,嵌套表可以包含多个行. 通俗地说,嵌套表就是表中的表,把一个表中的字段定义为一个表,这个字段表的数据存储在外部的 ...
- Oracle11.2新特性之listagg函数 (行列转换)
SELECT regexp_substr('公司1,贵公司2', '[^,]+', 1, LEVEL, 'i') FROM dual CONNECT BY LEVEL <= length('公司 ...
- oracle时间24小时格式转换,在oracle数据库中查询时间并转为24小时制--------------String转Date类型或者Date转String类型...
1.在Oracle数据库中查询时间的时候,首先就是把日期从date类型的转化为String类型的. 2.将date类型的转成String类型的,直接调用传入date类型的参数,返回String类型的字 ...
- oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)
一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...
最新文章
- lstm预测sin函数方法2思路的
- 论文笔记之:Graph Attention Networks
- 阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松
- C#调用C++Dll封装时遇到的一系列问题 参考
- iOS7应用开发5、视图控制器View Controller及其生命周期
- Python编写人机对战小游戏(抓狐狸)(2)
- kali wifi密码 破解
- Eclipse离线安装Svn插件
- 蓝桥杯题目——平方回文数
- mysql5.7下载中文版_mysql 5.7版本的下载安装
- 从苏宁电器到卡巴斯基第05篇:我的创业梦
- 点云中的Chamfer distance
- 安卓 调用QQ加群代码
- 小米路由器3无线网连接到服务器,192.168.31.1小米路由器手机登录设置方法
- Andriod PDA RFID感应盘点
- win11正式版如何退回win10 windows11正式版退回win10的步骤方法
- 使用U盘系统盘安装操作系统步骤
- matlab如何修复照片裂纹,把撕裂破旧老照片修复还原的PS技巧
- 数值策划扫盲专贴:深入浅出谈数值
- 百度引擎的伴侣是SEO吗?