等效于Oracle XE 11.2中PostgreSQL的array_agg

等效于Oracle XE 11.2中PostgreSQL的array_agg,第1张

等效于Oracle XE 11.2中PostgreSQL的array_agg

除非您在存储过程中使用它来将输出另存为数组(或集合),否则使用的查询

LISTAGG
应该足够并提供相同的输出。

select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) CategoriesFROM yourtable GROUP BY ID;

在oracle中,我们没有像这样的简单转换函数

array_agg
。但是,您可以创建用户定义的集合类型,然后使用
CAST
COLLECT
函数将其转换为
NESTEDTABLE
以获得相同的所需输出。

首先,创建一个集合

TYPE

create or replace TYPE categorytype as TABLE OF VARCHAr2(20);

现在,运行此查询等效于使用

string_agg
LISTAGG
,尽管
categories
它是数组或 集合 ,而不是字符串。

select id, CAST ( COLLECT(Category) as categorytype ) categoriesFROM yourtable group by id;| ID | CATEGORIES ||----|------------||  1 |  Cat1,Cat2 ||  2 |  Cat3,Cat4 |

演示



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4887884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存