Oracle: combina più risultati in una sottoquery in un singolo valore separato da virgola [duplicato]
-
20-08-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Sto cercando di convertire una sottoquery a colonna singola in un elenco di valori VARCHAR
separato da comandi.
Questo è identico a questo domanda , ma per Oracle anziché per SQL Server o MySQL.
Soluzione
Esiste un eccellente riepilogo delle tecniche di aggregazione delle stringhe disponibili su Il sito di Tim Hall.
Altri suggerimenti
Ho trovato questo che sembra funzionare. Pensieri?
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 introdotto LISTAGG , che a differenza di WM_CONCAT è documentato. Non siamo ancora in 11.2, quindi utilizziamo una funzione aggregata personalizzata.
Ecco un blog che mostra una query Oracle che funziona come MySQL GROUP_CONCAT()
:
http://halisway.blogspot.com/2006 /08/oracle-groupconcat-updated-again.html
SELECT deptno, wm_concat (ename) dipendenti AS DA emp GROUP BY deptno;
Riferimento: http://forums.oracle. com / forum / thread.jspa? messageID = 1186901 & amp; # 1186901