Heim > Datenbank > MySQL-Tutorial > Wie kann ich Zeichenfolgen aus mehreren Zeilen in SQL Azure effizient verketten?

Wie kann ich Zeichenfolgen aus mehreren Zeilen in SQL Azure effizient verketten?

Patricia Arquette
Freigeben: 2025-01-20 08:56:09
Original
323 Leute haben es durchsucht

How Can I Efficiently Concatenate Strings from Multiple Rows in SQL Azure?

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:

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;
Nach dem Login kopieren

Detaillierte Erklärung:

Diese Lösung verwendet einen dreiteiligen Prozess:

  1. Zeilennummerierung: Weist jeder Zeile innerhalb jeder ID Partition eine eindeutige Nummer zu, alphabetisch nach Name geordnet, unter Verwendung von ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name).
  2. Rekursive Verkettung: Ein rekursiver Common Table Expression (CTE) hängt iterativ Name Werte basierend auf den zugewiesenen Zeilennummern an.
  3. Endgültige Auswahl: Filtert die Ergebnisse, um nur die Zeilen mit dem höchsten 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage