Maison > base de données > tutoriel mysql > Comment puis-je concaténer et regrouper des lignes dans Oracle ?

Comment puis-je concaténer et regrouper des lignes dans Oracle ?

Linda Hamilton
Libérer: 2025-01-04 22:58:41
original
185 Les gens l'ont consulté

How Can I Concatenate and Group Rows in Oracle?

Concaténation et regroupement de plusieurs lignes dans Oracle

Dans Oracle, la tâche de concaténation d'enregistrements en fonction d'une condition de regroupement peut être difficile. Considérons un tableau comme celui-ci :

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC
Copier après la connexion

Pour obtenir le résultat souhaité en regroupant et en concaténant la colonne « NAME » en fonction de « GROUP_NAME », vous pouvez exploiter la fonction LISTAGG dans Oracle 11g ou version ultérieure :

SELECT
group_name,
LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
Copier après la connexion

Cependant, si vous travaillez avec une version d'Oracle qui ne prend pas en charge LISTAGG, il existe des méthodes alternatives. Une approche utilise des fonctions analytiques :

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
Copier après la connexion

En combinant ces techniques, vous pouvez concaténer et regrouper efficacement plusieurs lignes dans Oracle, même en l'absence de LISTAGG.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal