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

时间:2012-04-04 17:04:32

标签: sql sql-server

我目前有一个包含以下行的列的视图:

ID, Name

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

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

1 个答案:

答案 0 :(得分: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;