Maison > base de données > tutoriel mysql > Comment puis-je obtenir des valeurs distinctes à l'aide de la fonction LISTAGG d'Oracle ?

Comment puis-je obtenir des valeurs distinctes à l'aide de la fonction LISTAGG d'Oracle ?

Susan Sarandon
Libérer: 2025-01-19 18:06:13
original
192 Les gens l'ont consulté

How Can I Get Distinct Values Using Oracle's LISTAGG Function?

Oracle LISTAGG : Extraction de valeurs uniques

La fonction Oracle LISTAGG, bien que puissante, peut présenter des défis lorsque l'on vise des valeurs uniques dans une colonne. Cet article présente des solutions efficaces sans avoir besoin de fonctions ou de procédures supplémentaires.

Oracle 19c et supérieur :

Oracle 19c et versions ultérieures offrent une approche 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

Cela regroupe directement des valeurs distinctes, offrant une méthode concise et efficace.

Oracle 18c et versions antérieures :

Pour les anciennes versions d'Oracle, 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

Cela crée une table temporaire (t) contenant uniquement des valeurs distinctes avant l'application de LISTAGG.

Gestion de plusieurs colonnes :

Pour inclure des colonnes supplémentaires aux côtés des valeurs LISTAGG uniques, utilisez cette requête :

<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

Cela garantit que chaque valeur col2 unique est correctement associée à sa valeur col1 correspondante, fournissant ainsi un ensemble de résultats plus complet.

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