[Oracle] LISTAGG - Gruppe als Einzeiler ausgeben
Hauptkategorie: Programmieren
Kategorie: SQL
Erstellt am 14.12.2011
Zuletzt aktualisiert am 14.12.2011
Geschrieben von Jonny132
Oftmals will man einen Distinct / Gruppierung nur auf eine Spalte machen und die Restlichen Spalten die nicht Gruppiert werden können sollen in einem String zusammengesetzt werden.Seit Oracle 11g gibt es genau für diesen fall nun eine Funktion. Diese nennt sich LISTAGG.
Oracle LISTAGG - Beispiel | |
1 2 3 4 |
SELECT deptno, LISTAGG(ename, ', ') WITHIN GROUP(ORDER BY ename) AS mitarbeiter FROM emp GROUP BY deptno |
Zuerst wird die DepartmentNummer selektiert und dann eine Liste von den Mitarbeitern erstellt, die dem Department zugeordnet sind. Die Mitarbeiter werden durch ein Beistrich getrennt.
Das Ergebnis sollte in Etwa so aussehen:
DEPTNO | MITARBEITER |
10 | Peter, Hans, Paul |
20 | Hannes, Florian, Stefan, Lisa, Christina |
30 | Frederic, Mathias, Katharina |