Oracle:Объединить несколько результатов в подзапросе в одно значение, разделенное запятыми [дублировать]
-
20-08-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
Я пытаюсь преобразовать подзапрос с одним столбцом в разделенный командами VARCHAR
-введенный список значений.
Это идентично этот вопрос, но для Oracle, а не для SQL Server или MySQL.
Решение
Существует отличное краткое изложение доступные методы агрегирования строк на сайте Тима Холла.
Другие советы
Я нашел это, которое, кажется, работает.Мысли?
SELECT SUBSTR (c, 2) concatenated
FROM (SELECT SYS_CONNECT_BY_PATH ( myfield, ',') c, r
FROM (SELECT ROWNUM ID, myfield,
RANK () OVER (ORDER BY ROWID DESC) r
FROM mytable
ORDER BY myfield)
START WITH ID = 1
CONNECT BY PRIOR ID = ID - 1)
WHERE r = 1;
11.2 введенный ЛИСТАГГ, который, в отличие от WM_CONCAT, документирован.Мы еще не перешли на 11.2, поэтому используем пользовательскую агрегатную функцию.
Вот блог, в котором показан запрос Oracle, работающий подобно MySQL GROUP_CONCAT()
:
http://halisway.blogspot.com/2006/08/oracle-groupconcat-updated-again.html
ВЫБЕРИТЕ deptno, wm_concat (имя пользователя) В КАЧЕСТВЕ сотрудников ИЗ emp ГРУППИРУЙТЕ По deptno;
Ссылка: http://forums.oracle.com/forums/thread.jspa?messageID=1186901�