[Oracle] LISTAGG - Gruppe als Einzeiler ausgeben

Drucken
( 9 Votes )
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

 

    Veröffentlichen Sie ihre Kommentare ...