Heim >Datenbank >MySQL-Tutorial >Wie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server und Oracle?
Kombinieren mehrerer Zeilen in einer einzigen durch Kommas getrennten Spalte (SQL Server und Oracle)
Diese Anleitung zeigt, wie Sie mehrere Zeilen basierend auf einem gemeinsamen Feld (z. B. TicketID
) zusammenfassen und ihre entsprechenden Werte (z. B. Person
) in einer einzigen durch Kommas getrennten Spalte (z. B. People
) verketten. Wir werden Lösungen sowohl für SQL Server als auch für Oracle erkunden.
SQL Server-Lösung
SQL Server nutzt die Funktion STUFF
für die effiziente Verkettung und Einfügung von Zeichenfolgen. Das folgende Beispiel verdeutlicht dies:
<code class="language-sql">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 Preceding Comma], ISNULL(( SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE ).value('.','VARCHAR(max)'), '') [Preceding Comma If Not Empty] FROM @Tickets t GROUP BY t.TicketID</code>
Oracle-Lösung
Oracle bietet die Funktion LISTAGG
, die speziell für die Verkettung von Spaltenwerten mit einem benutzerdefinierten Trennzeichen entwickelt wurde. So wird es verwendet:
<code class="language-sql">SELECT TicketID, LISTAGG(Person, ',') WITHIN GROUP (ORDER BY Person) AS People FROM @Tickets GROUP BY TicketID</code>
Beide Methoden führen effektiv mehrere Zeilen in einer einzigen Spalte zusammen und trennen die verketteten Werte durch Kommas. Die Wahl der Funktion hängt von Ihrem Datenbanksystem (SQL Server oder Oracle) ab.
Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server und Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!