Maison >base de données >tutoriel mysql >Comment puis-je supprimer les valeurs en double de la sortie STRING_AGG dans 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 :
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>
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>
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>
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!