除非您在存储过程中使用它来将输出另存为数组(或集合),否则使用的查询
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 |
演示
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)