2012-04-04 10 views
2

Im Moment habe ich eine Ansicht mit Säulen entlang der Linien von:Wie serialisiert werden (auf kommagetrennte Liste) SQL Zeilen

ID, Name

ich eine dritte Spalte Properties hinzufügen möchten, die eine durch Kommata getrennte Liste enthalten von Eigenschaften. Ich kann die Eigenschaften von einer Verbindungstabelle abrufen, aber im Moment gibt der Beitritt eine separate Zeile für jede Eigenschaft zurück. Was ist der beste Weg, um eine einzelne Zeile für eine kommagetrennte Liste zu ziehen?

In der Vergangenheit glaube ich, ich habe eine benutzerdefinierte Funktion mit einem Cursor verwendet. Es wäre großartig, wenn ich das ohne die UDF machen könnte, aber ich bin mir nicht 100% sicher. Wenn nicht, bin ich sicher, dass ich den Cursor mit einer intelligenteren UDF loswerden kann.

Antwort

4
SELECT ID, Name, Properties = STUFF((
    SELECT ',' + PropertyName FROM dbo.Properties 
    WHERE ID = x.ID 
    FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') 
FROM dbo.ViewName AS x 
GROUP BY ID, Name; 
+0

Legende- danke! –

Verwandte Themen