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>
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>
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 :
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!