Maison >base de données >tutoriel mysql >Comment puis-je concaténer efficacement les valeurs de ligne dans SQL Server sans LISTAGG ?

Comment puis-je concaténer efficacement les valeurs de ligne dans SQL Server sans LISTAGG ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 08:41:16554parcourir

How Can I Efficiently Concatenate Row Values in SQL Server Without LISTAGG?

Concaténation des valeurs de ligne dans SQL Server : une alternative à LISTAGG

L'un des défis courants dans SQL est l'agrégation des valeurs de chaîne sur les lignes. Dans ce contexte, LISTAGG est une fonction pratique prise en charge par de nombreux systèmes de bases de données. Cependant, dans SQL Server, il n'existe pas d'équivalent direct à LISTAGG.

Pour obtenir des fonctionnalités similaires dans SQL Server, une approche consiste à utiliser une sous-requête dans la requête principale. Cependant, l'approche traditionnelle présentée ci-dessous présente un inconvénient potentiel :

SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make

Dans cette requête, AGG peut être remplacé par une combinaison de fonctions STRING_AGG et GROUP_CONCAT :

SELECT *, 
 (SELECT STRING_AGG(CarModel, ', ')
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make

Cette requête modifiée fournit une solution robuste pour concaténer les valeurs de lignes dans SQL Server. Cependant, il est important de noter que les caractéristiques de performance de cette approche peuvent varier en fonction de la taille et de la complexité de l'ensemble de données.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn