出力を配列(またはコレクション)として保存するためにストアドプロシージャで使用している場合を除き、LISTAGGを使用したクエリ 十分であり、同じ出力が得られるはずです。
select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) Categories
FROM yourtable GROUP BY ID;
オラクルには、array_aggのような簡単な変換関数はありません。 。ただし、ユーザー定義のコレクションタイプを作成してから、CASTを使用することはできます。 およびCOLLECT それをNESTED TABLEに変換する関数 同じ目的の出力を取得します。
まず、コレクションTYPEを作成します 。
create or replace TYPE categorytype as TABLE OF VARCHAR2(20);
これで、このクエリを実行することは、string_aggを使用することと同じです。 またはLISTAGG 、ただしcategories 配列またはコレクションです 、文字列ではなく。
select id, CAST ( COLLECT(Category) as categorytype ) categories
FROM yourtable group by id;
| ID | CATEGORIES |
|----|------------|
| 1 | Cat1,Cat2 |
| 2 | Cat3,Cat4 |