Эквивалент LISTAGG в PostgreSQL

У меня проблемы с преобразованием этого из Oracle в PostgreSQL. Я пытался использовать STRING_AGG, но безуспешно. Я считаю, что есть проблема с REGEXP_REPLACE. Кто-нибудь может помочь?

REGEXP_REPLACE(
    LISTAGG(column_name, ',') WITHIN GROUP (ORDER BY column_name), 
    '([^,]+)(,\1)*(,|$)', 
    '\1\3'
)

person edavis    schedule 16.03.2020    source источник
comment
STRING_AGG(column_name, ',' ORDER BY column_name) должен работать для переключателя listagg/string_agg.   -  person JNevill    schedule 16.03.2020
comment
Можете ли вы поделиться некоторыми примерами данных/желаемыми результатами для регулярного выражения?   -  person JNevill    schedule 16.03.2020
comment
Похоже, вы также пытаетесь использовать регулярное выражение для устранения дубликатов... вы можете использовать distinct column_name, чтобы справиться с этим.   -  person Hambone    schedule 16.03.2020
comment
Спасибо, Hambone, я попробую.   -  person edavis    schedule 16.03.2020
comment
Джей Невилл, спасибо. Это отлично работает! К сожалению, я не могу поделиться данными, но в будущем я сделаю макет некоторых тестовых данных, чтобы опубликовать их со своим вопросом.   -  person edavis    schedule 16.03.2020


Ответы (1)


Возможно, вы хотите что-то вроде этого:

string_agg(DISTINCT column_name, ',' ORDER BY column_name)
person Laurenz Albe    schedule 16.03.2020