Verketten und Gruppieren mehrerer Zeilen in Oracle
Dieser Artikel befasst sich mit der Herausforderung des Verkettens und Gruppierens mehrerer Zeilen in Oracle, sodass Sie Tabellen transformieren können mit verstreuten Daten in eine besser organisierte Struktur. Stellen Sie sich das folgende Szenario vor:
Sie haben eine Tabelle mit zwei Spalten, NAME und GROUP_NAME:
NAME GROUP_NAME name1 groupA name2 groupB name5 groupC name4 groupA name3 groupC
Ihr Ziel ist es, ein Ergebnis zu erstellen, in dem Namen für jeden eindeutigen GROUP_NAME-Wert verkettet sind:
GROUP_NAME NAMES groupA name1,name4 groupB name2 groupC name3,name5
In diesem Fall bietet die LISTAGG-Funktion, die in Oracle 11g und höher verfügbar ist, eine unkomplizierte Lösung Lösung:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
Wenn Sie jedoch mit Oracle-Versionen vor 11g arbeiten, können Sie Analysen einsetzen, um das gleiche Ergebnis zu erzielen:
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 Nutzung sowohl von LISTAGG als auch von Analysen, Sie können mehrere Zeilen in Oracle effizient verketten und gruppieren und so Ihre Daten in eine aussagekräftigere Darstellung für weitere Analysen und Berichte umwandeln.
Das obige ist der detaillierte Inhalt vonWie kann ich in Oracle mehrere Zeilen verketten und gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!