Maison >base de données >tutoriel mysql >Comment agréger plusieurs lignes en une seule ligne dans Oracle SQL ?

Comment agréger plusieurs lignes en une seule ligne dans Oracle SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-15 18:42:43696parcourir

How to Aggregate Multiple Rows into a Single Row in Oracle SQL?

Oracle SQL fusionne plusieurs lignes en une seule ligne

Dans la base de données Oracle, vous devrez peut-être fusionner plusieurs lignes d'un tableau en une seule ligne, créant ainsi une structure de tableau avec plusieurs colonnes. Supposons qu'il existe une table avec le schéma suivant :

<code>A 1
A 2
B 1
B 2</code>

Pour atteindre les résultats attendus suivants :

<code>A 1 2
B 1 2</code>

Oracle propose des fonctions SQL spécifiques pour répondre à ce besoin :

Fonction WM_CONCAT (obsolète)

Avertissement : La fonction WM_CONCAT est désormais obsolète et a été supprimée dans Oracle 12c et versions ultérieures. Son utilisation dans des versions ultérieures peut entraîner des résultats imprévisibles.

<code class="language-sql">SELECT field1, WM_CONCAT(field2)
FROM YourTable
GROUP BY field2;</code>

Fonction LISTAGG

Pour les versions Oracle plus récentes, il est recommandé d'utiliser la fonction LISTAGG :

<code class="language-sql">SELECT field1, LISTAGG(field2, ',') WITHIN GROUP (ORDER BY field2)
FROM YourTable
GROUP BY field1;</code>

Agrégation personnalisée

Si ni les fonctions WM_CONCAT ni LISTAGG ne sont disponibles dans votre version d'Oracle, vous pouvez implémenter des agrégations personnalisées en suivant ces étapes :

  1. Créez une table temporaire pour stocker les données agrégées.
  2. Insérez les données requises dans une table temporaire à l'aide d'une boucle ou d'une récursivité.
  3. Récupérez les données agrégées d'une table temporaire.

Veuillez noter que les agrégations personnalisées peuvent être plus complexes et plus gourmandes en calcul que l'utilisation de fonctions prédéfinies.

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