Как объединить 2 столбца с помощью SQL в DBeaver, подключенном к Redshift

Вот пример таблицы:

 account_no     season      animal 
      A         spring      sheep
      A         spring      cow
      A         winter      pig
      B         winter      lamb

Я использую DBeaver, подключенный к Redshift, и хочу ГРУППИРОВАТЬ ПО номеру_аккаунта и сезону и объединять животных в один столбец, как показано ниже:

account_no      season     animalList 
     A          spring     sheep, cow
     A          winter     pig   
     B          winter     lamb         

Я пробовал функцию STRING_AGG, например

SELECT STRING_AGG(animal,',') AS animalList
FROM Animals
GROUP BY account_no, season

Однако я получаю сообщение об ошибке ниже:

Error occurred during SQL query execution

Reason: SQL Error [500310] [42883]: [Amazon](500310) Invalid operation: function string_agg(character varying, "unknown") does not exist;

Я пытался добавить varchar, как было предложено другими потоками, но все равно получаю ту же ошибку.

 SELECT STRING_AGG(animal: : varchar,',') AS animalList
    FROM Animals
    GROUP BY account_no, season

Ценю вашу помощь!


person Sarah Rahman    schedule 08.05.2021    source источник


Ответы (1)


Redshift вызывает функцию listagg():

SELECT LISTAGG(animal, ',') WITHIN GROUP (ORDER BY animal) AS animalList
FROM Animals
GROUP BY account_no, season;

Это небезосновательно, ведь это стандартное название функции.

person Gordon Linoff    schedule 08.05.2021
comment
Привет, Гордон Линофф, это работает! Большое спасибо! - person Sarah Rahman; 10.05.2021