Maison >base de données >tutoriel mysql >Comment puis-je agréger des chaînes dans SQL Server comme LISTAGG d'Oracle ?
Agrégation de listes dans SQL Server
SQL Server fournit un ensemble puissant de fonctions pour l'agrégation de données, y compris la possibilité de concaténer les valeurs de plusieurs lignes en une seule chaîne séparée par des virgules. La maîtrise de cette méthode d'agrégation est essentielle pour diverses tâches d'agrégation et de présentation de données.
Pour obtenir les mêmes fonctionnalités que la fonction LISTAGG d'Oracle dans SQL Server, vous pouvez utiliser la fonction STRING_AGG. Introduite dans SQL Server 2017, cette fonction permet de concaténer des chaînes au sein d'un groupe.
Exemple
Considérez l'ensemble de données suivant :
字段 A | 字段 B |
---|---|
1 | A |
1 | B |
2 | A |
Requête :
<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>
Résultat :
字段 A | FieldBs |
---|---|
1 | A, B |
2 | A |
La fonction STRING_AGG avec la clause WITHIN GROUP garantit que les valeurs sont concaténées au sein de chaque groupe regroupé par FieldA. La clause ORDER BY dans un agrégat spécifie l'ordre dans lequel les valeurs doivent être répertoriées.
Pour les versions de SQL Server antérieures à 2017, vous pouvez utiliser une combinaison de fonctions CTE (expression de table commune) et STUFF pour obtenir le même résultat. Cependant, par souci de simplicité et de compatibilité avec les versions plus récentes, la fonction STRING_AGG est la solution recommandé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!