Kombination mehrerer Datensatzfelder in T-SQL
In T-SQL ist es oft notwendig, Felder mehrerer Datensätze basierend auf einem anderen Feld zu gruppieren. Stellen Sie sich das folgende Szenario vor:
Sie haben drei Tabellen: Bewertungen, Rezensenten und Benutzer. Die Tabelle Reviews enthält ReviewID und ReviewDate. Die Reviewer-Tabelle enthält ReviewerID, ReviewID und UserID. Schließlich enthält die Tabelle Benutzer Benutzer-ID, FName und LName.
Herausforderung:
Sie möchten eine Liste von Rezensionen anzeigen, die jeweils das entsprechende Rezensionsdatum und eine durch Kommas getrennte Liste mit den Namen aller mit dieser Rezension verbundenen Rezensenten enthalten. Die gewünschte Ausgabe sieht so aus:
<code>ReviewID---ReviewDate----Users ---------------------------- 1----------12/1/2009-----Bob, Joe, Frank 2----------12/9/2009-----Sue, Alice</code>
statt:
<code>ReviewID---ReviewDate---User ---------------------------- 1----------12/1/2009----Bob 1----------12/1/2009----Joe 1----------12/1/2009----Frank 2----------12/9/2009----Sue 2----------12/9/2009----Alice</code>
Lösung:
Eine Möglichkeit, dieses Problem zu lösen, ist die Verwendung der Methode FOR XML PATH(''):
<code class="language-sql">SELECT *, ( SELECT u.FName + ',' FROM @Users u INNER JOIN @Reviewers rs ON u.UserID = rs.UserID WHERE rs.ReviewID = r.ReviewID FOR XML PATH('') ) AS Users FROM @Reviews r</code>
Hier ist eine Aufschlüsselung der Abfrage:
Zeile 1: Wählen Sie die erforderlichen Spalten aus der Tabelle Rezensionen aus: ReviewID und ReviewDate.
Zeilen 4–9: Verwenden Sie eine Unterabfrage, um eine durch Kommas getrennte Liste mit Namen für jeden Kommentar abzurufen.
Zeile 10: Das Ergebnis der -Unterabfrage wird mit dem Alias Benutzer versehen.
Diese überarbeitete Ausgabe verdeutlicht den Alias und verbessert die Lesbarkeit. Die Kernfunktionalität bleibt dieselbe und verkettet die Vornamen der Prüfer effizient in einer durch Kommas getrennten Zeichenfolge.
Das obige ist der detaillierte Inhalt vonWie verkettet man die Vornamen mehrerer Gutachter in einer einzigen durch Kommas getrennten Zeichenfolge in T-SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!