Maison > base de données > tutoriel mysql > Comment effectuer une agrégation de chaînes groupées dans SQL Server sans LISTAGG ?

Comment effectuer une agrégation de chaînes groupées dans SQL Server sans LISTAGG ?

Mary-Kate Olsen
Libérer: 2024-12-29 01:48:10
original
811 Les gens l'ont consulté

How to Perform Grouped String Aggregation in SQL Server Without LISTAGG?

Agrégation de chaînes groupées dans SQL Server

Lorsque vous travaillez avec SQL Server, une tâche courante consiste à agréger les valeurs de chaîne de plusieurs lignes en une seule. , chaîne séparée par des virgules. Par exemple, à partir d'un tableau avec les constructeurs et les modèles de voitures, vous souhaiterez peut-être créer un ensemble de données qui regroupe les modèles de voitures par marque de voiture.

Alternative à LISTAGG pour SQL Server

Dans Oracle, cette tâche est généralement accomplie à l'aide de la fonction LISTAGG. Cependant, SQL Server n'a pas d'équivalent LISTAGG intégré. Au lieu de cela, vous pouvez utiliser une combinaison des fonctions STUFF et FOR XML PATH pour obtenir le même résultat.

La requête suivante montre comment réaliser une agrégation de chaînes groupées dans SQL Server à l'aide de STUFF et FOR XML PATH :

SELECT
  make.CarMakeID,
  make.CarMake,
  (
    SELECT
      STUFF(
        (
          SELECT
            ',' + model.CarModel
          FROM CarModels
          WHERE
            model.CarMakeID = make.CarMakeID
          FOR XML PATH('')
        ),
        1,
        1,
        ''
      ) AS CarModels
  )
FROM CarMakes AS make;
Copier après la connexion

Dans cette requête, la sous-requête utilise la fonction FOR XML PATH pour concaténer les modèles de voitures en une seule chaîne XML, séparée par des virgules. La fonction STUFF supprime ensuite la virgule de début et renvoie la chaîne concaténée sous forme de colonne CarModels.

Voici le résultat de la requête :

| CarMakeID | CarMake | CarModels |
|----------|---------|-----------|
| 1         | SuperCars | Zoom, Wow, Awesome |
| 2         | MehCars | Mediocrity, YoureSettling |
Copier après la connexion

Cette technique fournit un moyen simple et efficace pour réaliser une agrégation de chaînes groupées dans SQL Server, même dans les situations où la concaténation de chaînes est complexe ou inclut des caractères spéciaux.

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