Maison >base de données >tutoriel mysql >Comment effectuer une agrégation de chaînes groupées dans SQL Server sans 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!