正如你所知,SQL Server不像MySQL没有Group_Concat
函数,所以为此目的如何为SQL Server编写查询。我需要在SQL Server中编写一个类似group_concat的查询
我使用Visual Studio创建了一个应用程序。应用程序有一个Windows窗体。我能够保存,删除和更新数据库表中的记录。我需要显示一个人的电子邮件地址,所以我需要使用类似Group_concat
的方法。
你能帮助我吗?
正如你所知,SQL Server不像MySQL没有Group_Concat
函数,所以为此目的如何为SQL Server编写查询。我需要在SQL Server中编写一个类似group_concat的查询
我使用Visual Studio创建了一个应用程序。应用程序有一个Windows窗体。我能够保存,删除和更新数据库表中的记录。我需要显示一个人的电子邮件地址,所以我需要使用类似Group_concat
的方法。
你能帮助我吗?
您可能需要使用XML路径为SQL Server < = 2016和String_Agg从SQL Server 2017年,SQL Azure的等等,请找样品聚集低于
CREATE TABLE dbo.[#Table1] (fullname VARCHAR(20),education VARCHAR(20))
INSERT INTO #Table1
SELECT 'john', 'harvard' UNION ALL
SELECT 'john', 'mit' UNION ALL
SELECT 'eric', 'mit' UNION ALL
SELECT 'anna', 'yale'
--<=SQL Server 2016
Select fullname, stuff ((
select ',' + education from #Table1 where fullname = t.fullname
for xml path('')
),1,1,'') as education
From #Table1 t
Group by fullname
--For SQL Server 2017, SQL Azure, SQL PDW
Select fullname, string_agg(education,',') as Education from #table1
Group by fullname
谢谢你的帮助。我想知道什么是t.fullname和Table1 t。 –
什么意思?因为你的表名只是表1 –
在子查询中使用t作为别名 –
你可以张贴一些示例数据和预期的结果。 –
在当前SQL Server版本中执行聚合字符串连接的常用方法是使用XML PATH子查询。如果您需要帮助,请包含所需的项目@FelixPamittan。据推测,SQL Server 2017将于今年晚些时候发布,其中包含一个“STRING_AGG”功能来促进这一点。 –
这个问题已经回答了很多次,有几种方法可以做到 - 而且所有的都很慢。如果您想要速度,请在客户端上构建字符串。 –