Agrégation de chaînes groupées : fonction LISTAGG dans SQL Server
L'agrégation de chaînes dans SQL Server fournit un moyen de combiner plusieurs valeurs de chaîne en une seule concaténée chaîne. Lorsque vous travaillez avec des données groupées, cette fonctionnalité est cruciale dans des scénarios tels que la génération de listes de valeurs distinctes séparées par des virgules.
Considérez le schéma suivant, dans lequel nous souhaitons regrouper des modèles de voitures au sein de chaque marque de voiture :
| CarMakeID | CarMake ------------------------ | 1 | SuperCars | 2 | MehCars | CarMakeID | CarModelID | CarModel ----------------------------------------- | 1 | 1 | Zoom | 2 | 1 | Wow | 3 | 1 | Awesome | 4 | 2 | Mediocrity | 5 | 2 | YoureSettling
Le résultat souhaité est :
| CarMakeID | CarMake | CarModels --------------------------------------------- | 1 | SuperCars | Zoom, Wow, Awesome | 2 | MehCars | Mediocrity, YoureSettling
Pour réaliser cette agrégation, SQL Server propose plusieurs options. Cependant, l'approche recommandée pour la concaténation de chaînes consiste à utiliser la fonction STRING_AGG.
La requête révisée suivante utilise la fonction STRING_AGG à la place de AGG de la requête initiale :
SELECT *, (SELECT STRING_AGG(CarModel, ', ') AS CarModels FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) FROM CarMakes make
La fonction STRING_AGG est une fonction d'agrégation intégrée qui prend une valeur de colonne et concatène toutes les valeurs distinctes en une seule chaîne. Le paramètre facultatif SEPARATOR nous permet de spécifier le délimiteur entre les valeurs, et dans ce cas, nous avons choisi une virgule.
Cette requête produira la sortie souhaitée, où la colonne CarModels contient une liste de voitures séparées par des virgules. modèles pour chaque marque.
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!