Maison >base de données >tutoriel mysql >Comment concaténer des valeurs au sein de groupes dans SQL Server ?

Comment concaténer des valeurs au sein de groupes dans SQL Server ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-09 12:36:48173parcourir

How to Concatenate Values Within Groups in SQL Server?

Rejoindre des groupes dans SQL Server

Pour joindre des valeurs au sein de groupes dans SQL Server 2005, envisagez d'utiliser des fonctions d'agrégation définies par l'utilisateur.

Solution :

  1. Créer une fonction d'agrégation définie par l'utilisateur (UDAF) :

    <code class="language-sql"> CREATE AGGREGATE [dbo].[ConcatValues] (@str VARCHAR(MAX))
     RETURNS VARCHAR(MAX)
     AS
     BEGIN
         DECLARE @result VARCHAR(MAX) = '',
                 @delim VARCHAR(2) = '';
         WHILE @str IS NOT NULL
         BEGIN
             SET @result = @result + @delim + @str;
             SET @delim = ',';
             SET @str = NEXT VALUE;
         END;
         RETURN @result;
     END;</code>
  2. Utiliser UDAF dans les requêtes :

    <code class="language-sql"> SELECT Id, [dbo].[ConcatValues](Value) AS ConcatenatedValues
     FROM YourTable
     GROUP BY Id;</code>

Résultat :

Id ConcatenatedValues
1 'A,B'
2 'C'

Notez que cette solution utilise une boucle WHILE pour parcourir les valeurs d'entrée et les concaténer en utilisant des virgules comme séparateurs. Ceci est différent de la boucle FOR dans l'exemple d'origine, mais implémente la même fonctionnalité et est plus courante dans SQL Server. NEXT VALUE est utilisé pour obtenir la prochaine valeur d'entrée de la fonction d'agrégation. YourTable doit être remplacé par le nom réel de votre table.

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!

Déclaration:
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