Ich versuche, einige Daten für einen Bericht zusammenzufassen und die Zeilenwerte einer der Tabellen zu verketten. Hier ist die grundlegende Tabellenstruktur:Verketten von Zeilenwerten T-SQL
Bewertungen
ReviewID
ReviewDate
Reviewer
ReviewerID
ReviewID
UserID
Benutzer
UserID
FName
LName
Dies ist eine M: M-Beziehung. Jeder Review kann viele Reviewer haben; Jeder Benutzer kann mit vielen Bewertungen verknüpft werden.
Grundsätzlich möchte ich nur Reviews.ReviewID, Reviews.ReviewDate und eine verkettete Zeichenfolge der FNames aller zugeordneten Benutzer für diese Überprüfung (durch Kommas getrennt) sehen.
Statt:
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
Letzte:
ReviewID---ReviewDate----Users
1----------12/1/2009-----Bob, Joe, Frank
2----------12/9/2009-----Sue, Alice
ich this Artikel beschreibt einige Möglichkeiten gefunden haben, dies zu tun, aber die meisten von ihnen scheinen nur mit einem Tisch zu beschäftigen, nicht mehrere ; Leider ist mein SQL-Fu nicht stark genug, um diese an meine Verhältnisse anzupassen. Ich bin besonders an dem Beispiel auf dieser Seite interessiert, das FOR XML PATH() verwendet, da es am saubersten und geradlinigsten aussieht.
SELECT p1.CategoryId,
(SELECT ProductName + ', '
FROM Northwind.dbo.Products p2
WHERE p2.CategoryId = p1.CategoryId
ORDER BY ProductName FOR XML PATH('')
) AS Products
FROM Northwind.dbo.Products p1
GROUP BY CategoryId;
Kann mir jemand dabei helfen? Jede Hilfe würde sehr geschätzt werden!
Ähnlich http://stackoverflow.com/questions/122942/how-to-return-multiple -values-in-one-column-t-sql und http://stackoverflow.com/questions/451415/simulating-groupconcat-mysql-function-in-ms-sql-server-2005 – VolkerK