嘿!如何创建聚合函数以获取聚合值列表。给定:
key value Andrei 1 Andrei 2 Andrei 3 Mihai 4 Mihai 5 Mihai 6
我想要
key list Andrei 1,2,3 Mihai 4,5,6
gcmastyq1#
MS SQL解决方案:[注意:此解决方案仅适用于SQL 2005及更高版本。原始问题未指定使用的版本。]
SELECT key , STUFF((SELECT ',' + CAST([value] AS nvarchar(max)) FROM <#Table#> WHERE (key = Results.key) FOR XML PATH ('')),1,2,'') AS NameValues FROM <#Table#> Results GROUP BY key
yqhsw0fo2#
我曾经用这篇文章来描述同样的事情:http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
ymzxtsji3#
您需要模拟MySQL的group_concat函数。有关详细信息,请查看this article。
kognpnkq4#
对于那些希望在2022年做到这一点的人:
我这样做
select [Key], STRING_AGG([Value], ',') as [List] from TableX group by [Key]
在我的例子中,[Value]是一个字符串,但如果它是一个整型,你可以先将它转换为字符串。','是指示我选择的分隔符。适用于Azure SQL Server。
4条答案
按热度按时间gcmastyq1#
MS SQL解决方案:[注意:此解决方案仅适用于SQL 2005及更高版本。原始问题未指定使用的版本。]
yqhsw0fo2#
我曾经用这篇文章来描述同样的事情:
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
ymzxtsji3#
您需要模拟MySQL的group_concat函数。
有关详细信息,请查看this article。
kognpnkq4#
对于那些希望在2022年做到这一点的人:
我这样做
在我的例子中,[Value]是一个字符串,但如果它是一个整型,你可以先将它转换为字符串。','是指示我选择的分隔符。适用于Azure SQL Server。