Maison > base de données > tutoriel mysql > Comment puis-je supprimer les valeurs en double de la sortie STRING_AGG dans SQL Server ?

Comment puis-je supprimer les valeurs en double de la sortie STRING_AGG dans SQL Server ?

Barbara Streisand
Libérer: 2025-01-24 06:57:09
original
310 Les gens l'ont consulté

How Can I Remove Duplicate Values from STRING_AGG Output in SQL Server?

Gestion des valeurs en double dans la fonction STRING_AGG de SQL Server

La fonction STRING_AGG de SQL Server, introduite dans SQL Server 2017, concatène les valeurs des colonnes en une seule chaîne. Cependant, cela ne supprime pas automatiquement les doublons. Cet article détaille une approche en deux étapes pour obtenir des valeurs distinctes dans la chaîne agrégée.

La solution en deux étapes

La clé est d'effectuer une opération distincte avant en utilisant STRING_AGG. Cela implique un processus de regroupement en deux étapes :

  1. Regroupement initial pour les valeurs distinctes : Tout d'abord, regroupez les données par la ou les colonnes que vous souhaitez rendre uniques, ainsi que par toute autre colonne nécessaire pour votre résultat final. Cela supprime les lignes en double à la source.

    <code class="language-sql">WITH Sitings AS (
        SELECT * FROM (VALUES 
        (1, 'Florida', 'Orlando', 'bird'),
        (2, 'Florida', 'Orlando', 'dog'),
        (3, 'Arizona', 'Phoenix', 'bird'),
        (4, 'Arizona', 'Phoenix', 'dog'),
        (5, 'Arizona', 'Phoenix', 'bird'),
        (6, 'Arizona', 'Phoenix', 'bird'),
        (7, 'Arizona', 'Phoenix', 'bird'),
        (8, 'Arizona', 'Flagstaff', 'dog')
        ) F (ID, State, City, Siting)
    ), CTE_Animals AS (
        SELECT State, City, Siting
        FROM Sitings
        GROUP BY State, City, Siting
    )</code>
    Copier après la connexion
  2. Regroupement final et agrégation : Ensuite, regroupez les résultats de la première étape selon les colonnes souhaitées et appliquez STRING_AGG pour concaténer les valeurs distinctes.

    <code class="language-sql">SELECT
        State, City, COUNT(1) AS [# Of Sitings], STRING_AGG(Siting,',') AS Animals
    FROM CTE_Animals
    GROUP BY State, City
    ORDER BY State, City;</code>
    Copier après la connexion

Remarque importante sur la longueur des cordes :

Si votre chaîne concaténée risque de dépasser la limite de 8 000 caractères de VARCHAR, convertissez les valeurs en VARCHAR(MAX) avant d'utiliser STRING_AGG :

<code class="language-sql">STRING_AGG(CAST(Siting AS VARCHAR(MAX)), ',') AS Animals</code>
Copier après la connexion

Cette méthode produit effectivement un STRING_AGG résultat contenant uniquement des valeurs uniques.

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