Verketten und Gruppieren mehrerer Zeilen in Oracle
In Oracle kann die Aufgabe, Datensätze basierend auf einer Gruppierungsbedingung zu verketten, eine Herausforderung sein. Stellen Sie sich eine Tabelle wie diese vor:
NAME GROUP_NAME name1 groupA name2 groupB name5 groupC name4 groupA name3 groupC
Um das gewünschte Ergebnis der Gruppierung und Verkettung der Spalte „NAME“ basierend auf „GROUP_NAME“ zu erzielen, können Sie die LISTAGG-Funktion in Oracle 11g oder höher nutzen:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
Wenn Sie jedoch mit einer Oracle-Version arbeiten, die LISTAGG nicht unterstützt, gibt es alternative Methoden. Ein Ansatz nutzt analytische Funktionen:
select grp, ltrim(max(sys_connect_by_path (name, ',' )), ',') scbp from (select name, grp, row_number() over (partition by grp order by name) rn from tab ) start with rn = 1 connect by prior rn = rn-1 and prior grp = grp group by grp order by grp
Durch die Kombination dieser Techniken können Sie mehrere Zeilen in Oracle effektiv verketten und gruppieren, auch wenn LISTAGG nicht vorhanden ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen in Oracle verketten und gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!