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
Mary-Kate Olsenoriginal
2024-12-29 01:48:10799parcourir

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;

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 |

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!

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