如何序列化(以逗号分隔的列表)SQL行

Lee*_*ett 2 sql sql-server

我目前有一个视图列的行:

ID, Name

我想添加第三列Properties,其中必须包含以逗号分隔的属性列表.我可以从连接表中获取属性,但是当前连接将为每个属性返回一个单独的行.为逗号分隔列表提取单行的最佳方法是什么?

在过去,我认为我已经使用了带有游标的用户定义函数.如果我能在没有UDF的情况下做到这一点,那就太棒了,但我不是百分百肯定的.如果没有,我确信我可以用更智能的UDF去除光标.

Aar*_*and 5

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;
Run Code Online (Sandbox Code Playgroud)