Utilisation de la chaîne de connexion GROUP BY dans SQL Server
La clause GROUP BY
est un outil puissant pour gérer la concaténation de chaînes dans SQL Server. En regroupant les lignes en fonction de champs communs, vous pouvez combiner efficacement les chaînes associées en un seul résultat de jointure.
Regardons un scénario :
Vous disposez d'un tableau avec des colonnes ID, Nom et Valeur. Vous souhaitez joindre toutes les lignes portant le même ID en une seule ligne contenant une colonne nommée Colonne contenant une chaîne de connexion au format Nom: Valeur.
Pour ce faire, vous pouvez combiner FOR XML
et PATH
avec la clause GROUP BY
:
<code class="language-sql">CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT) INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4) INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8) INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9) SELECT [ID], STUFF(( SELECT ', ' + [Name] + ':' + CAST([Value] AS VARCHAR(MAX)) FROM #YourTable WHERE (ID = Results.ID) FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)') ,1,2,'') AS NameValues FROM #YourTable Results GROUP BY ID DROP TABLE #YourTable</code>
Dans cette requête :
FOR XML PATH('')
pour créer une représentation XML des colonnes Nom et Valeur, séparées par des virgules. PATH('')
spécifie que les chaînes concaténées doivent être traitées comme une valeur unique. STUFF
supprime les virgules et les espaces au début de la chaîne de connexion. GROUP BY
pour regrouper les résultats par ID. En conséquence, vous obtiendrez le résultat suivant :
<code>ID NameValues 1 A:4, B:8 2 C:9</code>
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!