Maison >base de données >tutoriel mysql >Comment puis-je réaliser une agrégation de chaînes dans SQL Server comme la fonction LISTAGG d'Oracle ?

Comment puis-je réaliser une agrégation de chaînes dans SQL Server comme la fonction LISTAGG d'Oracle ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-03 20:05:38852parcourir

How Can I Achieve String Aggregation in SQL Server Like Oracle's LISTAGG Function?

Agrégation de chaînes groupées dans SQL Server : trouver une alternative à LISTAGG

Dans SQL Server, l'agrégation de chaînes peut être un défi. Étant donné une structure de tableau répertoriant les marques et les modèles de voitures, vous souhaiterez peut-être produire un ensemble de données qui regroupe les modèles de voitures par marque et concatène leurs valeurs dans une seule colonne, similaire à la fonction LISTAGG dans Oracle.

Pour y parvenir dans SQL Server, vous pouvez utiliser la méthode FOR XML PATH. Considérons la requête suivante :

SELECT CarMakeID,
       CarMake,
       (SELECT ModelNames.ModelNames
        FROM (SELECT DISTINCT CarModel AS ModelNames
              FROM CarModels
              WHERE CarMakeID = make.CarMakeID
              FOR XML PATH('')
             ) AS ModelNames
       ) AS CarModels
FROM CarMakes make

La sous-requête (SELECT ModelNames.ModelNames... concatène les noms de modèles distincts pour chaque marque de voiture à l'aide de la méthode FOR XML PATH(''). Cela génère un fichier séparé par des virgules. liste de modèles qui est ensuite attribuée à la colonne CarModels dans la requête externe.

En remplaçant AGG(CarModel) dans votre requête d'origine par le sous-requête décrite ci-dessus, vous pouvez obtenir le regroupement et l'agrégation de chaînes souhaités dans SQL Server.

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