Maison > base de données > tutoriel mysql > Comment concaténer des valeurs groupées dans SQL Server à l'aide d'une fonction d'agrégation définie par l'utilisateur ?

Comment concaténer des valeurs groupées dans SQL Server à l'aide d'une fonction d'agrégation définie par l'utilisateur ?

Patricia Arquette
Libérer: 2025-01-09 12:37:55
original
536 Les gens l'ont consulté

How to Concatenate Grouped Values in SQL Server Using a User-Defined Aggregate Function?

Agrégation de chaînes SQL Server avec fonctions d'agrégation définies par l'utilisateur

Besoin de concaténer des chaînes au sein de groupes dans SQL Server, similaire à GROUP_CONCAT de MySQL ? SQL Server 2005 et les versions ultérieures n'ont pas d'équivalent intégré, nécessitant une solution plus avancée. Une fonction d'agrégation définie par l'utilisateur (UDAF) fournit une approche efficace.

Considérez cet exemple de données :

Id Value
1 'A'
1 'B'
2 'C'

L'objectif est d'atteindre ce résultat :

Id Value
1 'AB'
2 'C'

Création de l'UDAF

Le code suivant définit un UDAF nommé AggregateConcat pour effectuer la concaténation de chaînes au sein de chaque groupe :

<code class="language-sql">CREATE FUNCTION AggregateConcat (@id INT, @value VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @result VARCHAR(MAX) = '';
    SELECT @result = @result + Value
    FROM TABLE_NAME
    WHERE Id = @id;
    RETURN @result;
END;</code>
Copier après la connexion

Utiliser l'UDAF

Cette fonction peut être utilisée dans une instruction SELECT comme n'importe quelle autre fonction d'agrégation :

<code class="language-sql">SELECT Id, dbo.AggregateConcat(Id, Value) AS ConcatenatedValue
FROM TABLE_NAME
GROUP BY Id;</code>
Copier après la connexion

Cette requête regroupe les données par Id et applique la fonction AggregateConcat pour concaténer la colonne Value pour chaque groupe, produisant le résultat souhaité. N'oubliez pas de remplacer TABLE_NAME par le nom réel de votre table. Cette version simplifiée évite l'approche moins efficace basée sur le curseur. Pour les ensembles de données très volumineux, envisagez des méthodes alternatives plus performantes, comme l'utilisation de STRING_AGG (disponible dans SQL Server 2017 et versions ultérieures).

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