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

Comment puis-je récupérer uniquement des valeurs distinctes à l'aide de la fonction LISTAGG d'Oracle ?

Patricia Arquette
Libérer: 2025-01-19 18:21:09
original
653 Les gens l'ont consulté

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

Utilisation de la fonction LISTAGG dans Oracle pour récupérer des valeurs uniques

La fonction LISTAGG d'Oracle peut joindre les valeurs dans les colonnes spécifiées. Cependant, cette fonction peut produire des résultats en double lors de la récupération de valeurs de colonnes non uniques.

Question :

Utilisez la fonction LISTAGG lorsque vous souhaitez récupérer uniquement les valeurs uniques d'une colonne sans avoir à utiliser une fonction ou une procédure. Par exemple, considérons le tableau suivant :

col1 col2
1 2
1 2
1 3
1 4
1 5

Lorsque vous appliquez LISTAGG à col2, vous pouvez obtenir le résultat suivant : [2,2,3,4,5]. L'objectif est d'éliminer les 2 en double et d'afficher uniquement les valeurs uniques.

Solution :

19c et plus :

<code class="language-sql">select listagg(distinct col2, ',') within group (order by col2)
from the_table;</code>
Copier après la connexion

18c et avant :

<code class="language-sql">select listagg(col2, ',') within group (order by col2)
from (
   select distinct col2 
   from the_table
) t;</code>
Copier après la connexion

Ces requêtes utilisent le mot-clé DISTINCT dans la fonction LISTAGG pour garantir que seules les valeurs uniques sont incluses.

Colonnes supplémentaires :

Si vous devez récupérer plusieurs colonnes avec des valeurs uniques, vous pouvez procéder comme suit :

<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

Cette requête attribue un numéro de ligne unique à chaque combinaison de col1 et col2, puis sélectionne la première ligne pour chaque groupe col1.

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