2015-04-10 11 views
8

Devo sostituire il driver Oracle con i postgres più recenti.Qual è l'equivalente di LISTAGG in postgres?

Postgres non conosce la funzione LISTAGG. Devo concatenare i valori con una virgola separata.

Qual è l'equivalente per la funzione Oracle LISTAGG in Postgres?

Grazie.

+1

Una semplice ricerca su google e ho trovato http://www.postgresonline.com/journal/archives/191-String-Aggregation-in-PostgreSQL , -SQL-Server, -and-MySQL.html in cima. –

+2

Perché non controllare semplicemente il capitolo ["Aggregate Functions"] (http://www.postgresql.org/docs/current/static/functions-aggregate.html) dal manuale? –

+0

Basta crearne uno: CREATE FUNCTION LISTAGG .... –

risposta

11

La funzione equivalente in Postgres è string_agg()

select string_agg(col,',') from my_table 

string_agg : input values concatenated into a string, separated by delimiter

+0

(SELEZIONA c_id, STRING_AGG (c_grp_id, ',') WITHIN GROUP (ORDER BY c_grp_id) AS group_ids FROM c_grp_at GROUP BY c_id) puts ERRORE: function string_agg (bigint, sconosciuto, bigint) inesistente Hinweis: nessuna funzione corrisponde a dato il nome e il tipo di argomento. Potrebbe essere necessario aggiungere cast di tipo esplicito. – cy221

+1

@ cy221 'STRING_AGG (c_grp_id :: text, ',')' –

+0

Il problema era ENTRO IL GRUPPO. L'ho rimosso. – cy221

Problemi correlati