我正在寻找一种将不同行中的字符串聚合为一行的方法。我希望在许多不同的地方进行此操作,因此具有促进此操作的功能会很好。我已经尝试过使用COALESCE
和解决方案FOR XML
,但它们只是不适合我。
字符串聚合将执行以下操作:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
我看过CLR定义的聚合函数来代替COALESCE
和FOR XML
,但是显然SQL Azure 不支持CLR定义的东西,这让我很痛苦,因为我知道能够使用它可以解决很多问题。我的问题。
有什么可能的解决方法,或者类似的最优方法(可能不如CLR最优,但是我会尽力而为)来聚合我的东西?
for xml
显示查询性能(查询的大部分!)的使用率为25%
for xml path
查询的方法。一些比其他更快。它可能取决于您的数据,但根据distinct
我的经验,正在使用的数据要比使用慢group by
。而且,如果您.value('.', nvarchar(max))
要获取级联值,则应将其更改为.value('./text()[1]', nvarchar(max))
for xml
对您不起作用?