A menos que você esteja usando em um procedimento armazenado para salvar a saída como uma matriz (ou coleção), uma consulta com
LISTAGG
deve ser suficiente e dá a mesma saída. select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) Categories
FROM yourtable GROUP BY ID;
No oracle, não temos uma função de conversão direta como
array_agg
. No entanto, você pode criar um tipo de coleção definido pelo usuário e usar CAST
e COLLECT
funções para convertê-lo em uma NESTED TABLE
para obter a mesma saída desejada. Em primeiro lugar, crie uma coleção
TYPE
. create or replace TYPE categorytype as TABLE OF VARCHAR2(20);
Agora, executar esta consulta é equivalente a usar
string_agg
ou LISTAGG
, embora categories
é uma matriz ou coleção , em vez de uma string. select id, CAST ( COLLECT(Category) as categorytype ) categories
FROM yourtable group by id;
| ID | CATEGORIES |
|----|------------|
| 1 | Cat1,Cat2 |
| 2 | Cat3,Cat4 |
DEMO