sql >> Databáze >  >> RDS >> PostgreSQL

Ekvivalent pole_agg PostgreSQL v Oracle XE 11.2

Pokud jej nepoužíváte v uložené proceduře k uložení výstupu jako pole (nebo kolekce), dotaz s LISTAGG by měl být dostatečný a poskytuje stejný výstup.

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

V oracle nemáme přímou konverzní funkci jako array_agg . Můžete však vytvořit uživatelsky definovaný typ kolekce a poté použít CAST a COLLECT funkce pro převod na NESTED TABLE získat stejný požadovaný výstup.

Nejprve vytvořte kolekci TYPE .

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

Nyní je spuštění tohoto dotazu ekvivalentní použití string_agg nebo LISTAGG , ačkoli categories je pole nebo kolekce , spíše než řetězec.

select id, CAST ( COLLECT(Category) as categorytype ) categories
FROM yourtable group by id;

| ID | CATEGORIES |
|----|------------|
|  1 |  Cat1,Cat2 |
|  2 |  Cat3,Cat4 |

DEMO



  1. API Server vrací chybu 404

  2. Proč funkce postgres trigram word_similarity nepoužívá gin index?

  3. java.sql.SQLException:Nesprávná hodnota řetězce:'\xF0\x9F\x91\xBD\xF0\x9F...'

  4. Reprezentace IP adresy v databázi Maxmind Geolitecity