


Wie verkette ich mehrere Zeilen in einer durch Kommas getrennten Liste in SQL Server und Oracle?
Zusammenfassen mehrerer SQL-Zeilen in einer einzigen durch Kommas getrennten Spalte
In diesem Artikel wird gezeigt, wie Sie mehrere Zeilen mit einem gemeinsamen Bezeichner in einer einzigen Zeile mit einer durch Kommas getrennten Liste in einer bestimmten Spalte zusammenfassen. Das Beispiel verwendet eine Tabelle mit Ticket-IDs und zugehörigen Personen, um ein Ergebnis zu erstellen, bei dem jede Ticket-ID mit einer Liste aller beteiligten Personen verknüpft ist.
SQL Server-Ansatz (2005 und höher)
Die folgende SQL Server-Abfrage erreicht dies mithilfe von STUFF()
, ISNULL()
und FOR XML PATH
:
SELECT t.TicketID, STUFF(ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') [No Preceeding Comma], ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), '') [Preceeding Comma If Not Empty] FROM @Tickets t GROUP BY t.TicketID
Diese Abfrage verwendet eine Unterabfrage, um mit jedem TicketID
verknüpfte Personen zu sammeln. Die FOR XML PATH
-Methode wandelt das Ergebnis in eine verkettete Zeichenfolge um und STUFF()
entfernt alle führenden Kommas. Die Funktion ISNULL()
behandelt Fälle, in denen einem Ticket keine Personen zugeordnet sind. Die optionalen Spalten bieten Flexibilität beim Umgang mit führenden Kommas.
Oracle-Lösung
Oracle bietet eine prägnantere Lösung mit der Funktion LISTAGG()
:
SELECT TicketID, LISTAGG(Person, ',') WITHIN GROUP (ORDER BY Person) OVER (PARTITION BY TicketID) AS People FROM @Tickets
LISTAGG()
fasst Werte direkt in einer durch Kommas getrennten Liste zusammen, sortiert nach der Spalte Person
. Die PARTITION BY
-Klausel stellt sicher, dass die Aggregation für jedes einzelne TicketID
erfolgt. Diese Methode ist deutlich einfacher und effizienter als das SQL Server-Äquivalent.
Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Zeilen in einer durch Kommas getrennten Liste in SQL Server und Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Reduzieren Sie die Verwendung des MySQL -Speichers im Docker

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?

So lösen Sie das Problem der MySQL können die gemeinsame Bibliothek nicht öffnen

Führen Sie MySQL in Linux aus (mit/ohne Podman -Container mit Phpmyadmin)

Ausführen mehrerer MySQL-Versionen auf macOS: Eine Schritt-für-Schritt-Anleitung

Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)?

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?
