Как получить одно значение без использования группы по Oracle - PullRequest
0 голосов
/ 11 марта 2020

У меня есть эти данные, и мне нужно объединить все строки подряд в поле полное имя и получить одно значение из 3 равно из поля заказа. Как я могу сделать это без использования группы?

Существующие данные

id order fullname
1 32 Jack Stinky Potato
2 32 Kevin Enormous Cucumber
3 32 Jerald Sad Onion

Ожидаемый результат

32 Jack Stinky Potato, Kevin Enormous Cucumber, Jerald Sad Onion

использование group by напишет

select order, wm_concat(fullname) from EmployeeCards
group by order

или это, но это не рационально.

 select wm_concat(unique order), wm_concat(fullname) from EmployeeCards

или просто select (unique order), wm_concat(fullname) from EmployeeCards не работает. Какую агрегатную функцию я должен использовать, чтобы получить единственное значение? Спасибо

1 Ответ

2 голосов
/ 11 марта 2020

Использование LISTAGG:

SELECT
    "order",
    LISTAGG(fullname, ',') WITHIN GROUP (ORDER BY id) AS fullnames
FROM EmployeeCards
GROUP BY
    "order";

screen capture of demo below

Демо

Кроме того, избегайте именования объектов базы данных (например, таблиц, столбцов и т. Д. c.), Используя зарезервированные ключевые слова SQL, например ORDER.

.
...