Объединять и группировать несколько строк в Oracle [дубликаты]
Возможный дубликат:
Как получить данные двух столбцов в формате A, B в Oracle
Предположим, у меня есть такая таблица:
NAME GROUP_NAME
name1 groupA
name2 groupB
name5 groupC
name4 groupA
name3 groupC
Я хотел бы получить такой результат:
GROUP_NAME NAMES
groupA name1,name4
groupB name2
groupC name3,name5
Если бы в таблице был только один столбец, я мог бы объединить записи, выполнив следующее, но с группировкой в контексте я действительно непонятия не имею.
Конкатенация таблицы с одним столбцом:
SELECT names
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
FROM name_table
START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
CONNECT BY PRIOR names < names
ORDER BY level DESC)
WHERE rownum = 1
Обновлено:Теперь у меня есть решение с помощью:LISTAGG
SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
Еще интересуюсь побольшегенеральный" решение для случаев, когдаLISTAGG
не доступен.