Maison >base de données >tutoriel mysql >Comment puis-je concaténer les valeurs de colonnes de plusieurs lignes dans Oracle SQL à l'aide de LISTAGG ?
Oracle SQL : combinaison de valeurs de colonnes sur plusieurs lignes avec LISTAGG
Oracle propose plusieurs façons de combiner les données de plusieurs lignes en une seule chaîne. La fonction LISTAGG
est une méthode particulièrement efficace.
Imaginez que vous ayez deux tableaux : le tableau A (avec une colonne PID
contenant les valeurs A, B, C) et le tableau B (avec les colonnes PID
, SEQ
et Desc
). L'objectif est de concaténer les valeurs Desc
du tableau B, regroupées par PID
et ordonnées par SEQ
, en une seule colonne Description
dans l'ensemble de résultats.
Voici comment y parvenir en utilisant LISTAGG
:
<code class="language-sql">SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description FROM B GROUP BY pid;</code>
Cette requête utilise LISTAGG
pour agréger les valeurs Desc
pour chaque PID
unique, en les classant par colonne SEQ
et en utilisant un espace (' ') comme délimiteur. La sortie affichera chaque PID
avec ses valeurs Desc
concaténées correspondantes dans la colonne description
.
Pour inclure uniquement les PID
présents dans le tableau A, joignez simplement cette requête au tableau A :
<code class="language-sql">SELECT a.pid, LISTAGG(b.Desc, ' ') WITHIN GROUP (ORDER BY b.seq) AS description FROM A a JOIN B b ON a.pid = b.pid GROUP BY a.pid;</code>
Considération importante : LISTAGG
fonctionne généralement correctement avec VARCHAR2
types de données.
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!