最近入职了新公司,使用的是sql server 之前因为一直使用的都是Mysql,mysql 有专用的GROUP_CONCAT()函数,那么这个就是很方便的啦,只要对结果集进行一个Group By 就会出现需要合并的数据啦
Sqlserver 是不一样的,列如:在sqlserver2017之前,我们一般只能使用Xml path 来拼接,具体语法如下,
(SELECT + convert(varchar(25), cc.StructName) +' '+ '['+convert(varchar(25), b.name)+']'+';' from structdealerlink aa inner join agentstruct bb on aa.structid=bb.id inner join Managerstructure cc on bb.StructTypeId = cc.Id where aa.AssocDataId=a.dataid for xml path('')) as StructNames
这样会出现自己想要的结果集,这跟MySql的简洁性没法比,直到sqlserver2017的出现,有了一个新的函数,string_agg()
不用说,这个函数的效果和MySql的GROUP_CONCAT()函数是一样的效果啦。
小伙伴们快去试一试吧