Maison >base de données >tutoriel mysql >Comment puis-je concaténer et regrouper efficacement des lignes dans Oracle ?
Concaténation et regroupement de lignes dans Oracle : revisiter les techniques de manipulation et d'agrégation de lignes
Dans le domaine de la manipulation et de l'agrégation de données, Oracle propose une solution polyvalente ensemble de fonctions qui permettent un traitement efficace de grands ensembles de données. Une tâche courante consiste à concaténer et à regrouper plusieurs lignes pour obtenir le résultat souhaité.
Considérez le scénario suivant : étant donné une table avec les colonnes NAME et GROUP_NAME, vous souhaitez transformer les données en une nouvelle table dans laquelle les lignes sont regroupées en fonction sur GROUP_NAME et les valeurs NAME correspondantes sont concaténées au sein de chaque groupe.
Une approche pour cette tâche consiste à exploiter le Fonction SYS_CONNECT_BY_PATH, comme démontré dans l'instruction SQL fournie. Cette approche construit de manière itérative une chaîne concaténée en connectant les valeurs de ligne au sein de chaque groupe.
Cependant, pour des scénarios plus avancés, la fonction LISTAGG offre une solution sophistiquée. Pris en charge dans Oracle 11g et versions ultérieures, LISTAGG permet une agrégation efficace des valeurs au sein de chaque groupe, en les séparant par un délimiteur spécifié (comme une virgule).
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names" FROM name_table GROUP BY group_name
Pour les versions antérieures d'Oracle dépourvues de LISTAGG, pensez en utilisant des fonctions analytiques telles que ROW_NUMBER et SYS_CONNECT_BY_PATH pour réaliser la concaténation des lignes et regroupement.
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
En explorant ces techniques, vous pouvez concaténer et regrouper efficacement des lignes dans Oracle, en gérant facilement les manipulations de données complexes et les exigences d'agrégation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!