Hallo Leute,
ich muss ein Java-Tool von Oracle auf Postgres umstellen.
In einem der Queries nutze ich die LISTAGG-Funktion. Equivalent dazu heißt die Postgres-Funtion STRING_AGG. Allerdings erhalte ich eine Fehlermeldung.
Oracle-Query:
SELECT c.*, org.name, c_in.d, c_grp_join.group_ids, dfs_c_at.dfs_id FROM c LEFT JOIN ou org on c.ou_idx = org.ou_idx LEFT c_in ON c.c_id = c_in.c_id LEFT dfs_c_at ON c.c_id = dfs_c_at.c_ID LEFT (SELECT c_ID, LISTAGG(c_grp_id, ',') WITHIN GROUP (ORDER BY c_grp_id) AS group_ids FROM c_grp_at group by c_id) c_grp_join ON c.c_ID = c_grp_join.c_ID WHERE c.c_id = ?
Postgres-Query:
SELECT c.*, org.name, c_in.d, c_grp_join.group_ids, dfs_c_at.dfs_id FROM c LEFT JOIN ou org on c.ou_idx = org.ou_idx LEFT c_in ON c.c_id = c_in.c_id LEFT dfs_c_at ON c.c_id = dfs_c_at.c_ID LEFT (SELECT 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) c_grp_join ON c.c_ID = c_grp_join.c_ID WHERE c.c_id = ?
ERROR: function string_agg(bigint, unknown, bigint) does not exist
Ich übergebe der Funktion gar keinen dritten Parameter, oder?
Was übersehe ich?
Danke.