Heim >Datenbank >MySQL-Tutorial >Wie verkettet man eindeutige Werte mithilfe von GROUP BY von SQL Server zu einer durch Kommas getrennten Zeichenfolge?
Eindeutige Werte in einer durch Kommas getrennten Liste mit GROUP BY von SQL Server zusammenfassen
Herausforderung:
Bei einer Tabelle mit doppelten Einträgen besteht das Ziel darin, Daten nach einer bestimmten Spalte zu gruppieren und eindeutige Werte aus einer anderen Spalte in einer einzigen, durch Kommas getrennten Zeichenfolge zusammenzufassen.
Beispieldaten:
Die folgende Tabelle veranschaulicht den ursprünglichen Datensatz:
ID | ReportId | |
---|---|---|
1 | 1 | [email protected] |
2 | 2 | [email protected] |
3 | 1 | [email protected] |
4 | 3 | [email protected] |
5 | 3 | [email protected] |
Zielergebnis:
Das gewünschte Ergebnis ist eine Tabelle mit konsolidierten E-Mail-Adressen:
ReportId | |
---|---|
1 | [email protected], [email protected] |
2 | [email protected] |
3 | [email protected], [email protected] |
Lösung mit GROUP BY und STUFF:
Die Funktion STUFF
wird verwendet, um Zeichenfolgen effizient zu verketten und führende Zeichen zu entfernen. Die Lösung lautet wie folgt:
<code class="language-sql">SELECT ReportId, Email = STUFF((SELECT ', ' + Email FROM your_table b WHERE b.ReportId = a.ReportId FOR XML PATH('')), 1, 2, '') FROM your_table a GROUP BY ReportId;</code>
Detaillierte Erklärung:
Die Kernlogik umfasst eine Unterabfrage innerhalb der Funktion STUFF
. Diese Unterabfrage durchläuft alle Zeilen, die dasselbe ReportId
wie die aktuelle Zeile der äußeren Abfrage haben. Für jede übereinstimmende Zeile werden ein Komma und der Wert Email
an die akkumulierende Zeichenfolge angehängt. Die äußere Abfrage verwendet dann GROUP BY
, um diese verketteten E-Mail-Zeichenfolgen für jedes eindeutige ReportId
zusammenzufassen. Die Funktion STUFF
entfernt das anfängliche Komma und Leerzeichen.
Das obige ist der detaillierte Inhalt vonWie verkettet man eindeutige Werte mithilfe von GROUP BY von SQL Server zu einer durch Kommas getrennten Zeichenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!