Maison > base de données > tutoriel mysql > Comment effectuer une agrégation de listes dans SQL Server ?

Comment effectuer une agrégation de listes dans SQL Server ?

DDD
Libérer: 2025-01-22 13:17:09
original
595 Les gens l'ont consulté

How to Perform List Aggregation in SQL Server?

Explication détaillée de l'agrégation de listes SQL Server

Dans les opérations de bases de données relationnelles, l'agrégation de données est une étape clé dans l'intégration de plusieurs informations d'enregistrement dans des résumés significatifs. L'agrégation de listes est l'une de ces méthodes d'agrégation qui concatène plusieurs valeurs en une seule liste séparée.

SQL Server lui-même ne fournit pas directement la fonction LISTAGG de type Oracle. Cependant, la même fonctionnalité peut être obtenue grâce à plusieurs techniques.

Méthode 1 : STRING_AGG (SQL Server 2017 et supérieur)

Pour SQL Server 2017 et versions ultérieures, la fonction STRING_AGG fournit une solution intéressante pour l'agrégation de listes :

<code class="language-sql">SELECT FieldA
     , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
  FROM TableName
 GROUP BY FieldA
 ORDER BY FieldA;</code>
Copier après la connexion

Méthode 2 : CTE récursive (SQL Server 2016 et versions antérieures)

Dans les versions antérieures de SQL Server, vous pouviez utiliser des expressions de table communes (CTE) récursives pour implémenter des agrégations de listes :

<code class="language-sql">  WITH CTE_TableName AS (
       SELECT FieldA, FieldB
         FROM TableName)
SELECT t0.FieldA
     , STUFF((
       SELECT ',' + t1.FieldB
         FROM CTE_TableName t1
        WHERE t1.FieldA = t0.FieldA
        ORDER BY t1.FieldB
          FOR XML PATH('')), 1, LEN(','), '') AS FieldBs
  FROM CTE_TableName t0
 GROUP BY t0.FieldA
 ORDER BY FieldA;</code>
Copier après la connexion

Compatibilité avec d'autres bases de données

Pour les systèmes de bases de données autres que SQL Server, les alternatives suivantes sont disponibles :

  • MySQL : GROUP_CONCAT
  • Oracle et DB2 : LISTAGG
  • PostgreSQL : STRING_AGG

Résumé

Bien que SQL Server ne dispose pas de fonction LISTAGG native, il existe de nombreuses façons d'obtenir des fonctionnalités similaires. Selon la version de SQL Server que vous utilisez, ces méthodes offrent des options flexibles pour agréger les données de chaîne dans une liste délimitée.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal