listagg
In Oracle 11gRel2 gibt es eine neue Gruppierungsfunktion das LISTAGG. Mit dieser Funktion ist man in der Lage, Spaltenwerte einer Wiederholungsgruppe in einer Zeile zusammenzufassen getrennt durch ein definiertes Trennzeichen.
Beispiel:
Inhalt der Tabelle Team:
GRUPPE NAME
==================== ============
Team Blau Harald
Team Blau Robert
Team Blau Thomas
Team Gelb Alex
Team Gelb Sabine
Team Rot Angelika
Team Rot Uwe
Erzeugen einer Mitgliederliste pro Team:
select distinct
gruppe
,listagg(name,’;')
within group (order by name asc)
over (partition by gruppe) as mitglieder
from teams
order by gruppe
;
Ergebnis:
GRUPPE MITGLIEDER
==================== ==============================
Team Blau Harald;Robert;Thomas
Team Gelb Alex;Sabine
Team Rot Angelika;Uwe
Die Wiederholungsgruppe wird über die Klausel PARTITION BY <COLUMN> angegeben, die Sortierung innerhalb der Liste über die Klausel ORDER BY <COLUMN>. In der Funktion LISTAGG bestimmt die erste Angabe die Spalte, die als Liste zusammengefasst werden soll, die zweite Angabe das Trennzeichen.

Abbonieren Sie den RSS Feed