Maison >base de données >tutoriel mysql >Comment combiner plusieurs lignes SQL dans un seul champ délimité ?
Fonction SQL Server : combiner plusieurs lignes SQL en un seul champ délimité
La fusion efficace de plusieurs lignes d'une sous-requête en un seul champ délimité au sein de SQL Server nécessite une approche robuste. Cet article présente deux techniques efficaces, adaptées aux différentes versions de SQL Server.
POUR XML CHEMIN (SQL Server 2005 et versions ultérieures) :
Cette méthode, compatible avec SQL Server 2005 et versions ultérieures, exploite la commande FOR XML PATH
pour la concaténation de chaînes. Voici un exemple :
<code class="language-sql">SELECT [VehicleID], [Name], (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')) AS Locations FROM [Vehicle]</code>
Cette requête utilise FOR XML PATH
pour créer une chaîne de valeurs de ville séparées par des virgules pour chaque VehicleID
. La fonction STUFF
supprime la virgule de début.
STRING_AGG (SQL Server 2017 et versions ultérieures) :
Pour SQL Server 2017 et versions ultérieures, la fonction STRING_AGG
offre une solution plus propre et plus efficace :
<code class="language-sql">SELECT [VehicleID], [Name], (SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V</code>
STRING_AGG
concatène directement les valeurs City
avec un séparateur spécifié (une virgule et un espace dans ce cas). Cette approche est généralement préférée pour sa lisibilité et ses performances améliorées.
Les deux méthodes regroupent efficacement les données de plusieurs lignes dans un seul champ délimité, simplifiant ainsi la manipulation des données dans SQL Server. Choisissez la méthode la mieux adaptée à votre version de SQL Server pour des résultats optimaux.
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!