Maison > base de données > tutoriel mysql > Comment puis-je utiliser STRING_AGG de SQL Server pour obtenir des valeurs distinctes et leur chaîne concaténée ?

Comment puis-je utiliser STRING_AGG de SQL Server pour obtenir des valeurs distinctes et leur chaîne concaténée ?

DDD
Libérer: 2025-01-24 06:51:13
original
688 Les gens l'ont consulté

How Can I Use SQL Server's STRING_AGG to Get Distinct Values and Their Concatenated String?

Utilisation de STRING_AGG de SQL Server pour les valeurs distinctes et la concaténation

La fonction STRING_AGG de SQL Server concatène efficacement les valeurs de plusieurs lignes. Cependant, obtenir directement des valeurs distinctes et leur chaîne concaténée nécessite une approche légèrement plus complexe. Le défi réside dans la combinaison des fonctionnalités de COUNT(DISTINCT ...) avec l'agrégation de chaînes.

Une solution courante implique un processus de regroupement en deux étapes. La première clause GROUP BY identifie des combinaisons uniques de colonnes pertinentes (par exemple, State, City, Siting), éliminant ainsi les doublons. Le second GROUP BY agrège ensuite ces combinaisons uniques, en utilisant STRING_AGG pour concaténer les valeurs distinctes. Cette méthode fournit à la fois un nombre de valeurs distinctes et la chaîne concaténée.

Voici un exemple illustrant cette technique :

<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')
    ) AS 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 requête produit un ensemble de résultats montrant des observations d'animaux distinctes par ville et par état :

<code>+---------+-----------+--------------+----------+
|  State  |   City    | # Of Sitings | Animals  |
+---------+-----------+--------------+----------+
| Arizona | Flagstaff |            1 | dog      |
| Arizona | Phoenix   |            2 | bird,dog |
| Florida | Orlando   |            2 | bird,dog |
+---------+-----------+--------------+----------+</code>
Copier après la connexion

Gestion des chaînes longues :

Si la chaîne concaténée de sites dépasse la limite de 8 000 caractères de varchar, il est nécessaire de convertir explicitement la colonne Siting en varchar(max) avant d'utiliser STRING_AGG pour éviter la troncature :

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

Cela garantit que la chaîne concaténée peut accueillir des résultats plus longs.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal