Agrégation de chaînes groupées dans SQL Server : remplacement de 'AGG'
SQL Server ne dispose pas d'une fonction d'agrégation de chaînes intégrée semblable à 'AGG ' dans la requête que vous avez fournie. Cependant, il existe des approches alternatives pour concaténer les valeurs des lignes en un résultat groupé.
Une solution exploite les fonctions FOR XML et STUFF. La fonction FOR XML convertit le résultat de la requête interne en XML, qui peut ensuite être traité avec la fonction STUFF pour supprimer les balises XML et concaténer les chaînes. Voici un exemple :
SELECT *, (SELECT STUFF(( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '') as CarModels FROM CarMakes make
Une autre approche utilise les fonctions COALESCE et ROW_NUMBER. La fonction COALESCE concatène les valeurs non nulles, tandis que la fonction ROW_NUMBER attribue des numéros de ligne uniques au sein de chaque groupe. La requête suivante utilise cette approche :
SELECT CarMakeID, CarMake, COALESCE( ( SELECT CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1 ), '', COALESCE( ( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1 ) ) ) as CarModels FROM CarMakes make
Ces approches fournissent des méthodes alternatives pour regrouper et concaténer des chaînes dans SQL Server, permettant une agrégation de données efficace et lisible.
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!