Auch nett…
wer weiss wofuer man es mal gebrauchen kann.
Gegeben sei folgende Tabelle:
SQL> SELECT deptno, ename FROM emp ORDER BY deptno, ename; DEPTNO ENAME ------ ---------- 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES 20 SCOTT 20 SMITH 30 ALLEN 30 BLAKE 30 JAMES 30 MARTIN 30 TURNER 30 WARD 14 rows selected.
Wir moechten jetzt die Employees zu einem department aber in je einer Zeile haben. Man nehme: wm.concat aus wmsys
SELECT deptno,wmsys.wm_concat(ename) as concatenated FROM dept group by deptno; DEPTNO CONCATENATED ---------- -------------------------------------------------- 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONES,SCOTT,SMITH 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD ...
Ist doch schick, oder ?
[Update 2017-04-25]: Habe das heute mal wieder gebraucht. wm_concat ist wohl nicht mehr vorhanden. Stattdessen gibt es was offizielles. Funktioniert fast genau so: listagg. Hier ein adaptiertes Beispiel:
SELECT deptno,wmsys.listagg(ename,', ') within group (order by ename) as concatenated FROM dept group by deptno;
Man kann sogar den Delimiter mit angeben (hier ein ,) und sortieren…
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.