Heim > Datenbank > MySQL-Tutorial > Wie kombiniere ich mehrere Unterabfragezeilen effizient in einem einzigen durch Trennzeichen getrennten Feld in SQL Server?

Wie kombiniere ich mehrere Unterabfragezeilen effizient in einem einzigen durch Trennzeichen getrennten Feld in SQL Server?

DDD
Freigeben: 2025-01-22 00:32:38
Original
277 Leute haben es durchsucht

How to Efficiently Combine Multiple Subquery Rows into a Single Delimited Field in SQL Server?

Optimierung der SQL Server-Datenmanipulation: Kombinieren von Unterabfragezeilen in einem einzigen durch Trennzeichen getrennten Feld

Komplexe Datenmanipulationsaufgaben erfordern oft das Schreiben umständlicher Codes, wie zum Beispiel Cursor-basierte Lösungen. Eine häufige Herausforderung besteht darin, mehrere Unterabfragezeilen in einem einzigen Feld mit einem Trennzeichen zu kombinieren. Dieser Artikel stellt effiziente Alternativen zu langwierigen Cursor-Implementierungen vor.

Betrachten Sie zwei Tabellen, „Fahrzeuge“ und „Standorte“, deren Ziel darin besteht, die mit jedem Fahrzeug verknüpften Städtenamen in einer einzigen Spalte „Standorte“ durch Kommas getrennt zusammenzufassen. Der traditionelle Cursor-Ansatz erfordert umfangreiche Codierung.

SQL Server 2005 und höher:

Eine elegantere Lösung nutzt den Befehl FOR XML PATH. Dadurch wird XML aus der Tabelle „Standorte“ generiert, Städtenamen werden durch Kommas getrennt, und dann wird das XML mithilfe der Funktion STUFF:

wieder in eine Textzeichenfolge umgewandelt
<code class="language-sql">SELECT [VehicleID], [Name],
       (STUFF((SELECT ',' + [City]
               FROM [Location]
               WHERE (VehicleID = Vehicle.VehicleID)
               FOR XML PATH('')), 1, 1, '')) AS Locations
FROM [Vehicle]</code>
Nach dem Login kopieren

SQL Server 2017 und höher:

Zur Verbesserung der Leistung und Einfachheit bieten SQL Server 2017 und spätere Versionen die Funktion STRING_AGG. Diese Funktion fasst Werte direkt in einer einzelnen Zeichenfolge zusammen und akzeptiert ein Trennzeichen als zweiten Parameter:

<code class="language-sql">SELECT [VehicleID], [Name],
       (SELECT STRING_AGG([City], ', ')
        FROM [Location]
        WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V</code>
Nach dem Login kopieren

Beide Methoden kombinieren effektiv mehrere Unterabfragezeilen in einem einzigen getrennten Feld und bieten erhebliche Verbesserungen gegenüber Cursor-basierten Ansätzen, was zu saubererem, effizienterem Code und kürzerer Entwicklungszeit führt. Wählen Sie die für Ihre SQL Server-Version geeignete Methode.

Das obige ist der detaillierte Inhalt vonWie kombiniere ich mehrere Unterabfragezeilen effizient in einem einzigen durch Trennzeichen getrennten Feld in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage