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

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

DDD
DDDoriginal
2025-01-04 05:45:39707parcourir

How Can I Concatenate and Group Multiple Rows in Oracle?

Concaténation et regroupement de plusieurs lignes dans Oracle

Cet article aborde le défi de la concaténation et du regroupement de plusieurs lignes dans Oracle, vous permettant de transformer des tables avec des données dispersées dans une structure plus organisée. Considérez le scénario suivant :

Vous disposez d'une table contenant deux colonnes, NAME et GROUP_NAME :

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC

Votre objectif est de créer un résultat dans lequel les noms sont concaténés pour chaque valeur GROUP_NAME unique :

GROUP_NAME     NAMES
groupA         name1,name4
groupB         name2
groupC         name3,name5

Dans ce cas, la fonction LISTAGG, disponible dans Oracle 11g et versions ultérieures, fournit un simple solution :

SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name

Cependant, si vous travaillez avec des versions d'Oracle antérieures à 11g, vous pouvez utiliser l'analyse pour obtenir le même résultat :

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 tirant parti à la fois de LISTAGG et d'analyse, vous pouvez concaténer et regrouper efficacement plusieurs lignes dans Oracle, transformant ainsi vos données en une représentation plus significative pour une analyse et des rapports plus approfondis.

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!

Déclaration:
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