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)相关推荐

  1. oracle sys_connect_by_root,CONNECT_BY_ROOT实现行列转换

    10g以下版本的ORACLE可以通过DECODE等实现行列转换,[@more@]ORACLE 10g开始新增的CONNECT_BY_ROOT能比较方便地实现行列转换. 例: 有一表ABC,字段信息包括 ...

  2. Oracle如何实现动态行列转换,Oracle实现行列转换的方法分析

    本文实例讲述了Oracle实现行列转换的方法.分享给大家供大家参考,具体如下: 1.固定列数的行列转换 如: sql;"> student subject grade -------- ...

  3. oracle 的行列转换函数,Oracle行列转换函数

    VM_CONCAT vm_concat可以用来进行行转列,默认以逗号分隔,可通过vm_concat(name,',','|')修改为|1 2 3 4 5 6 7 8 9 10 11 12 13SQL& ...

  4. PostgreSQL hint用法(兼容oracle)

    Hint是Oracle数据库中很有特色的一个功能,pg和oracle的优化器一样也是CBO(基于成本的).但是在pg中是没有hint的,但是我们可以去通过设置成本因子,设置优化器开关等方式来" ...

  5. PostgreSQL隐藏列(兼容oracle)

    oracle 12cR1新增了隐藏列的功能,在之前的版本中,为了隐藏重要的数据字段以避免在通用查询中显示,我们往往会创建一个视图来隐藏所需信息或应用某些安全条件,现在我们可以通过隐藏列来实现这一功能. ...

  6. postgres oracle 兼容,PostgreSQL嵌套表(兼容oracle)

    oracle中的嵌套表是某些行的集合,它在主表中表示为其中的一列.对主表中的每一条记录,嵌套表可以包含多个行. 通俗地说,嵌套表就是表中的表,把一个表中的字段定义为一个表,这个字段表的数据存储在外部的 ...

  7. Oracle11.2新特性之listagg函数 (行列转换)

    SELECT regexp_substr('公司1,贵公司2', '[^,]+', 1, LEVEL, 'i') FROM dual CONNECT BY LEVEL <= length('公司 ...

  8. oracle时间24小时格式转换,在oracle数据库中查询时间并转为24小时制--------------String转Date类型或者Date转String类型...

    1.在Oracle数据库中查询时间的时候,首先就是把日期从date类型的转化为String类型的. 2.将date类型的转成String类型的,直接调用传入date类型的参数,返回String类型的字 ...

  9. oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)

    一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...

最新文章

  1. lstm预测sin函数方法2思路的
  2. 论文笔记之:Graph Attention Networks
  3. 阿里P8高级架构师:面试没你想象中的难,拿Offer也可以很轻松
  4. C#调用C++Dll封装时遇到的一系列问题 参考
  5. iOS7应用开发5、视图控制器View Controller及其生命周期
  6. Python编写人机对战小游戏(抓狐狸)(2)
  7. kali wifi密码 破解
  8. Eclipse离线安装Svn插件
  9. 蓝桥杯题目——平方回文数
  10. mysql5.7下载中文版_mysql 5.7版本的下载安装
  11. 从苏宁电器到卡巴斯基第05篇:我的创业梦
  12. 点云中的Chamfer distance
  13. 安卓 调用QQ加群代码
  14. 小米路由器3无线网连接到服务器,192.168.31.1小米路由器手机登录设置方法
  15. Andriod PDA RFID感应盘点
  16. win11正式版如何退回win10 windows11正式版退回win10的步骤方法
  17. 使用U盘系统盘安装操作系统步骤
  18. matlab如何修复照片裂纹,把撕裂破旧老照片修复还原的PS技巧
  19. 数值策划扫盲专贴:深入浅出谈数值
  20. 百度引擎的伴侣是SEO吗?

热门文章

  1. 链式二叉树的创建、遍历和遍历算法的应用
  2. 甄选虚拟主机空间 拒绝为“假宽带”买单
  3. 【知识分享】你不了解的键盘功能键
  4. MindMapper荧光笔功能该怎么进行使用
  5. 北漂程序猿约会大学班花,竟发现彼此都……
  6. module.exports用法
  7. linux笔记:关于Permission denied
  8. Obvious用AI生成艺术画作,以43万美元拍卖价成交
  9. pandas 中的pct_change的用法
  10. 必备技能—icomoon图库的详细使用+例子展示