Maison >base de données >tutoriel mysql >Comment puis-je réaliser une agrégation de chaînes dans SQL Server sans fonction « AGG » ?

Comment puis-je réaliser une agrégation de chaînes dans SQL Server sans fonction « AGG » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 11:13:16948parcourir

How Can I Achieve String Aggregation in SQL Server Without an 'AGG' Function?

Agrégation de chaînes groupées dans SQL Server : remplacement de 'AGG'

SQL Server ne dispose pas d'une fonction d'agrégation de chaînes intégrée semblable à 'AGG ' dans la requête que vous avez fournie. Cependant, il existe des approches alternatives pour concaténer les valeurs des lignes en un résultat groupé.

Une solution exploite les fonctions FOR XML et STUFF. La fonction FOR XML convertit le résultat de la requête interne en XML, qui peut ensuite être traité avec la fonction STUFF pour supprimer les balises XML et concaténer les chaînes. Voici un exemple :

SELECT *, 
(SELECT STUFF((
    SELECT ', ' + CarModel
    FROM CarModels model
    WHERE model.CarMakeID = make.CarMakeID
    FOR XML PATH('')
), 1, 1, '') as CarModels
FROM CarMakes make

Une autre approche utilise les fonctions COALESCE et ROW_NUMBER. La fonction COALESCE concatène les valeurs non nulles, tandis que la fonction ROW_NUMBER attribue des numéros de ligne uniques au sein de chaque groupe. La requête suivante utilise cette approche :

SELECT CarMakeID, CarMake,
    COALESCE(
        (
            SELECT CarModel
            FROM CarModels model
            WHERE model.CarMakeID = make.CarMakeID
            AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1
        ),
        '',
        COALESCE(
            (
                SELECT ', ' + CarModel
                FROM CarModels model
                WHERE model.CarMakeID = make.CarMakeID
                AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1
            )
        )
    ) as CarModels
FROM CarMakes make

Ces approches fournissent des méthodes alternatives pour regrouper et concaténer des chaînes dans SQL Server, permettant une agrégation de données efficace et lisible.

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