Heim > Datenbank > MySQL-Tutorial > Wie verkette ich mehrere Zeilen in einer einzelnen Spalte in T-SQL?

Wie verkette ich mehrere Zeilen in einer einzelnen Spalte in T-SQL?

DDD
Freigeben: 2025-01-12 09:07:46
Original
979 Leute haben es durchsucht

How to Concatenate Multiple Rows into a Single Column in T-SQL?

Mehrere Werte als einzelne Spalte mit T-SQL zurückgeben

Beim Umgang mit Tabellen, die mehrere Werte für ein einzelnes Attribut enthalten, müssen diese Werte für eine effiziente Datenanalyse abgerufen und in einer einzigen Spalte zusammengeführt werden. Dieser Artikel befasst sich mit einer Lösung, die eine Kombination aus Funktionen und Zeichenfolgenoperationen verwendet, um mehrere Werte in einer Spalte zurückzugeben.

Beispiel:

Betrachten Sie die Tabelle „UserAliases“ mit mehreren Aliasnamen pro Benutzer:

<code>UserId/Alias  
1/MrX  
1/MrY  
1/MrA  
2/Abc  
2/Xyz</code>
Nach dem Login kopieren

Ziel ist es, die Daten in das folgende Format zu konvertieren:

<code>UserId/Alias  
1/ MrX, MrY, MrA  
2/ Abc, Xyz</code>
Nach dem Login kopieren

Lösung:

Dazu verwenden wir die benutzerdefinierte Funktion „GetAliasesById“, die die Funktion „COALESCE“ verwendet. Diese Funktion initialisiert eine Variable „@output“ und fügt ihr iterativ durch Kommas getrennte Aliaswerte hinzu. Das Folgende ist der Funktionscode:

<code class="language-sql">CREATE FUNCTION [dbo].[GetAliasesById]
(
    @userID int
)
RETURNS varchar(max)
AS
BEGIN
    declare @output varchar(max)
    select @output = COALESCE(@output + ', ', '') + alias
    from UserAliases
    where userid = @userID

    return @output
END</code>
Nach dem Login kopieren

Zuletzt rufen wir die Daten ab und wenden die Funktion „GetAliasesById“ an, um die Aliase zusammenzuführen:

<code class="language-sql">SELECT UserID, dbo.GetAliasesByID(UserID)
FROM UserAliases
GROUP BY UserID</code>
Nach dem Login kopieren

Diese Abfrage gibt die gewünschte Ausgabe mit mehreren Aliasnamen für jeden Benutzer zurück, die in einer einzigen Spalte zusammengefasst sind. Die Funktion „COALESCE“ verarbeitet Nullwerte effizient und gewährleistet so eine gültige String-Ausgabe.

Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Zeilen in einer einzelnen Spalte in T-SQL?. 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