Maison > base de données > tutoriel mysql > Comment puis-je obtenir des résultats distincts en utilisant STRING_AGG dans SQL Server 2017 ?

Comment puis-je obtenir des résultats distincts en utilisant STRING_AGG dans SQL Server 2017 ?

Susan Sarandon
Libérer: 2025-01-24 06:46:10
original
802 Les gens l'ont consulté

How Can I Get Distinct Results Using STRING_AGG in SQL Server 2017?

Génération de valeurs uniques avec la fonction STRING_AGG de SQL Server 2017

La fonction STRING_AGG dans SQL Server 2017 ne prend pas directement en charge les valeurs distinctes. Cependant, il est possible d’obtenir des résultats agrégés uniques en utilisant une approche en deux étapes. Cette méthode évite la syntaxe invalide de STRING_AGG(DISTINCT column, ',').

La solution implique une expression de table commune (CTE) pour prétraiter les données. Le CTE regroupe les données pour éliminer les doublons avant l'agrégation finale.

L'exemple ci-dessous illustre cette technique. Le Sitings CTE initial fournit des exemples de données. Le CTE_Animals CTE regroupe ensuite par State, City et Siting pour supprimer les entrées redondantes. La requête principale utilise ensuite STRING_AGG pour concaténer les valeurs Siting uniques pour chaque combinaison State et City.

<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
)
SELECT
    State, City, COUNT(*) 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

Cette approche garantit que la colonne Animals finale contient uniquement des observations d'animaux uniques pour chaque emplacement, tandis que la colonne # Of Sitings reflète le décompte distinct. La clause ORDER BY garantit un ordre de sortie cohérent et prévisible.

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