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
Libérer: 2024-12-26 11:13:16
original
857 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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!

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