Maison >base de données >tutoriel mysql >Comment puis-je concaténer et regrouper plusieurs lignes dans 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!