Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何序列化(以逗号分隔的列表)SQL行_Sql_Sql Server - Fatal编程技术网

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

如何序列化(以逗号分隔的列表)SQL行,sql,sql-server,Sql,Sql Server,我目前有一个视图,其中列的行为: ID,Name 我想添加第三列Properties,它必须包含以逗号分隔的属性列表。我可以从联接表中获取属性,但此时联接将为每个属性返回一个单独的行。对于逗号分隔的列表,最好的方式是什么 在过去,我认为我使用了一个带有光标的用户定义函数。如果我能在没有UDF的情况下做到这一点就太好了,但我不是100%确定。如果没有,我相信我可以用一个更智能的UDF来摆脱光标 SELECT ID, Name, Properties = STUFF(( SELECT ','

我目前有一个视图,其中列的行为:

ID,Name

我想添加第三列
Properties
,它必须包含以逗号分隔的属性列表。我可以从联接表中获取属性,但此时联接将为每个属性返回一个单独的行。对于逗号分隔的列表,最好的方式是什么

在过去,我认为我使用了一个带有光标的用户定义函数。如果我能在没有UDF的情况下做到这一点就太好了,但我不是100%确定。如果没有,我相信我可以用一个更智能的UDF来摆脱光标

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;