Heim >Datenbank >MySQL-Tutorial >Wie kann ich Zeichenfolgen aus mehreren Zeilen in SQL Azure effizient verketten?
Optimierung der String-Aggregation in SQL Azure
Das effiziente Kombinieren von Zeichenfolgen aus mehreren Zeilen in einer einzigen Zeile ist eine häufige Aufgabe der Datenmanipulation. Während sich einige Aggregationsmethoden als unzureichend erweisen, gibt es optimale Lösungen, um diese Herausforderung zu meistern.
Der beste Ansatz für SQL Azure
Der Mangel an CLR-definierten Aggregatfunktionen in SQL Azure erfordert alternative Strategien. Der folgende Transact-SQL-Ansatz bietet eine effiziente Lösung:
<code class="language-sql">WITH Partitioned AS ( SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) AS NameNumber, COUNT(*) OVER (PARTITION BY ID) AS NameCount FROM dbo.SourceTable ), Concatenated AS ( SELECT ID, CAST(Name AS nvarchar(max)) AS FullName, Name, NameNumber, NameCount FROM Partitioned WHERE NameNumber = 1 UNION ALL SELECT P.ID, CAST(C.FullName + ', ' + P.Name AS nvarchar(max)), P.Name, P.NameNumber, P.NameCount FROM Partitioned AS P INNER JOIN Concatenated AS C ON P.ID = C.ID AND P.NameNumber = C.NameNumber + 1 ) SELECT ID, FullName FROM Concatenated WHERE NameNumber = NameCount;</code>
Detaillierte Erklärung:
Diese Lösung verwendet einen dreiteiligen Prozess:
ID
Partition eine eindeutige Nummer zu, alphabetisch nach Name
geordnet, unter Verwendung von ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name)
.Name
Werte basierend auf den zugewiesenen Zeilennummern an.NameNumber
innerhalb jeder Partition beizubehalten, wodurch eine einzelne verkettete Zeichenfolge pro ID
entsteht.Hinweis: Bei dieser Abfrage wird eine Gruppierung nach ID
und eine aufsteigende alphabetische Reihenfolge der Zeichenfolgen vorausgesetzt. Abhängig von Ihrer spezifischen Datenstruktur und Ihren Anforderungen können Anpassungen erforderlich sein. Die nvarchar(max)
-Umwandlung gewährleistet eine ausreichende Stringlänge für große verkettete Ergebnisse.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen aus mehreren Zeilen in SQL Azure effizient verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!