我目前有一个包含以下行的列的视图:
ID, Name
我想添加第三列Properties
,它必须包含以逗号分隔的属性列表。我可以从连接表中获取属性,但是当前连接将为每个属性返回一个单独的行。为逗号分隔列表提取单行的最佳方法是什么?
过去我认为我已经使用了带游标的用户定义函数。如果我能在没有UDF的情况下做到这一点,那就太棒了,但我不是百分百肯定的。如果没有,我确信我可以用更智能的UDF去除光标。
答案 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;