2017-05-29 51 views
0

正如你所知,SQL Server不像MySQL没有Group_Concat函数,所以为此目的如何为SQL Server编写查询。我需要在SQL Server中编写一个类似group_concat的查询

我使用Visual Studio创建了一个应用程序。应用程序有一个Windows窗体。我能够保存,删除和更新数据库表中的记录。我需要显示一个人的电子邮件地址,所以我需要使用类似Group_concat的方法。

你能帮助我吗?

+0

你可以张贴一些示例数据和预期的结果。 –

+0

在当前SQL Server版本中执行聚合字符串连接的常用方法是使用XML PATH子查询。如果您需要帮助,请包含所需的项目@FelixPamittan。据推测,SQL Server 2017将于今年晚些时候发布,其中包含一个“STRING_AGG”功能来促进这一点。 –

+0

这个问题已经回答了很多次,有几种方法可以做到 - 而且所有的都很慢。如果您想要速度,请在客户端上构建字符串。 –

回答

0

您可能需要使用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 
+0

谢谢你的帮助。我想知道什么是t.fullname和Table1 t。 –

+0

什么意思?因为你的表名只是表1 –

+0

在子查询中使用t作为别名 –