出力を配列(またはコレクション)として保存するためにストアドプロシージャで使用している場合を除き、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 |