2015-04-10 19 views
8

Muszę wymienić sterownik Oracle na najnowszy postgres.Jaki jest odpowiednik LISTAGG w postgresie?

Postgres nie zna funkcji LISTAGG. Muszę przydzielić wartości oddzielone przecinkami.

Jaki jest odpowiednik dla funkcji Oracle LISTAGG w Postgres?

Dzięki.

+1

Proste wyszukiwanie google i znalazłem http://www.postgresonline.com/journal/archives/191-String-Aggregation-in-PostgreSQL , -SQL-Server, i MySQL.html na wierzchu. –

+2

Dlaczego nie po prostu sprawdź rozdział ["Funkcje agregujące"] (http://www.postgresql.org/docs/current/static/functions-aggregate.html) z podręcznika? –

+0

Po prostu stwórz jedną: UTWÓRZ FUNKCJĘ LISTAGG .... –

Odpowiedz

11

Odpowiednikiem funkcji w PostgreSQL jest string_agg()

select string_agg(col,',') from my_table 

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

+0

(SELECT c_id, STRING_AGG (c_grp_id, ',') WITHIN GROUP (ORDER BY c_grp_id) AS group_ids OD c_grp_at GROUP BY c_id) stawia BŁĄD: funkcja string_agg (bigint, unknown, bigint) nie istnieje Hinweis: Żadna funkcja nie pasuje do podane typy nazw i argumentów. Może być konieczne dodanie rzutowania typów jawnych. – cy221

+1

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

+0

Problem polegał na WITHIN GROUP. Usunąłem to. – cy221