Maison >base de données >tutoriel mysql >Comment puis-je réaliser une agrégation de chaînes dans SQL Server comme la fonction LISTAGG d'Oracle ?
Agrégation de chaînes groupées dans SQL Server : trouver une alternative à LISTAGG
Dans SQL Server, l'agrégation de chaînes peut être un défi. Étant donné une structure de tableau répertoriant les marques et les modèles de voitures, vous souhaiterez peut-être produire un ensemble de données qui regroupe les modèles de voitures par marque et concatène leurs valeurs dans une seule colonne, similaire à la fonction LISTAGG dans Oracle.
Pour y parvenir dans SQL Server, vous pouvez utiliser la méthode FOR XML PATH. Considérons la requête suivante :
SELECT CarMakeID, CarMake, (SELECT ModelNames.ModelNames FROM (SELECT DISTINCT CarModel AS ModelNames FROM CarModels WHERE CarMakeID = make.CarMakeID FOR XML PATH('') ) AS ModelNames ) AS CarModels FROM CarMakes make
La sous-requête (SELECT ModelNames.ModelNames... concatène les noms de modèles distincts pour chaque marque de voiture à l'aide de la méthode FOR XML PATH(''). Cela génère un fichier séparé par des virgules. liste de modèles qui est ensuite attribuée à la colonne CarModels dans la requête externe.
En remplaçant AGG(CarModel) dans votre requête d'origine par le sous-requête décrite ci-dessus, vous pouvez obtenir le regroupement et l'agrégation de chaînes souhaités dans SQL Server.
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!