Maison > base de données > tutoriel mysql > Comment puis-je supprimer les doublons lors de l'utilisation de la fonction LISTAGG d'Oracle ?

Comment puis-je supprimer les doublons lors de l'utilisation de la fonction LISTAGG d'Oracle ?

Barbara Streisand
Libérer: 2025-01-19 18:12:11
original
596 Les gens l'ont consulté

How Can I Remove Duplicates When Using Oracle's LISTAGG Function?

Oracle LISTAGG : Gestion des valeurs en double pour des résultats uniques

La fonction LISTAGG d'Oracle, bien que puissante pour agréger des données, ne supprime pas automatiquement les entrées en double. Il concatène toutes les valeurs, y compris les répétitions, en une seule chaîne. Voici comment obtenir une agrégation de valeurs distincte :

Méthode pour Oracle 19c et versions ultérieures :

Oracle 19c et versions ultérieures proposent une solution simplifiée :

<code class="language-sql">SELECT LISTAGG(DISTINCT the_column, ',') WITHIN GROUP (ORDER BY the_column)
FROM the_table;</code>
Copier après la connexion

Ceci intègre directement le mot-clé DISTINCT dans la fonction LISTAGG elle-même.

Méthode pour Oracle 18c et versions antérieures :

Pour les anciennes versions (18c et inférieures), une sous-requête est nécessaire :

<code class="language-sql">SELECT LISTAGG(the_column, ',') WITHIN GROUP (ORDER BY the_column)
FROM (
  SELECT DISTINCT the_column
  FROM the_table
) t;</code>
Copier après la connexion

Ceci sélectionne d'abord uniquement les valeurs uniques dans une sous-requête, puis s'applique LISTAGG à ce résultat.

Inclure plusieurs colonnes :

Pour inclure des colonnes supplémentaires et conserver l'unicité, une approche plus avancée est nécessaire :

<code class="language-sql">SELECT col1, LISTAGG(col2, ',') WITHIN GROUP (ORDER BY col2)
FROM (
  SELECT col1, 
         col2,
         ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col1) AS rn
  FROM foo
  ORDER BY col1, col2
)
WHERE rn = 1
GROUP BY col1;</code>
Copier après la connexion

Ceci utilise ROW_NUMBER() pour attribuer un rang unique à chaque combinaison de col1 et col2. La requête externe sélectionne ensuite uniquement la première occurrence (rn = 1) pour chaque combinaison unique, garantissant ainsi que les doublons sont éliminés avant l'agrégation.

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