Maison > base de données > tutoriel mysql > Comment concaténer des valeurs groupées dans SQL Server 2005 ?

Comment concaténer des valeurs groupées dans SQL Server 2005 ?

Mary-Kate Olsen
Libérer: 2025-01-09 12:26:44
original
1031 Les gens l'ont consulté

How to Concatenate Grouped Values in SQL Server 2005?

Fusionner les valeurs groupées dans SQL Server

Supposons que vous ayez une table qui contient plusieurs valeurs associées à un identifiant unique, par exemple :

<code>+------------+
| Id | Value |
+------------+
| 1  | 'A'   |
|------------|
| 1  | 'B'   |
|------------|
| 2  | 'C'   |
+------------+</code>
Copier après la connexion

Pour obtenir le résultat souhaité en fusionnant les lignes avec le même identifiant en une seule ligne avec la valeur combinée :

<code>+------------+
| Id | Value |
+------------+
| 1  | 'AB'  |
|------------|
| 2  | 'C'   |
+------------+</code>
Copier après la connexion

Dans SQL Server 2005, il est possible d'utiliser des fonctions d'agrégation définies par l'utilisateur. Cette fonction est fournie dans son exemple d'implémentation pour effectuer cette tâche de concaténation de manière transparente.

<code class="language-sql">-- 创建用户定义的聚合函数
CREATE FUNCTION [dbo].[ConcatValues](@array VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @result VARCHAR(MAX) = '';
    IF @array IS NOT NULL
    BEGIN
        SELECT @result = @result + value
        FROM STRING_SPLIT(@array, ',');
    END
    RETURN @result;
END;

-- 在查询中使用用户定义的聚合函数
SELECT Id, [dbo].[ConcatValues](STRING_AGG(Value, ',')) AS Value
FROM TableName
GROUP BY Id;</code>
Copier après la connexion

Avec cette solution, vous pouvez exploiter les fonctions d'agrégation définies par l'utilisateur comme n'importe quelle autre fonction d'agrégation standard, vous permettant de les intégrer de manière transparente dans vos requêtes. Notez que la fonction STRING_SPLIT est disponible dans SQL Server 2016 et versions ultérieures. Pour SQL Server 2005, vous devez utiliser une autre méthode pour diviser la chaîne, telle qu'une fonction personnalisée ou un curseur. Le code ci-dessus a été mis à jour pour utiliser la fonction STRING_AGG (SQL Server 2017 et versions ultérieures), offrant une solution plus claire. Pour SQL Server 2005, vous aurez besoin d'une solution personnalisée plus complexe pour émuler les fonctionnalités de STRING_AGG et STRING_SPLIT.

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