1,测试表数据
2,语句
select a.F_Name,F_CID = (stuff((select ',' + F_CID from Test_Sum where F_Name =
a.F_Name for xml path('')),1,1,'')) from Test_Sum a group by a.F_Name
3,知识点解析 for xml path
select F_CID=(SELECT F_CID
FROM [Test].[dbo].[Test_Sum] for xml path(''))
返回的是一个没有根节点的xml文件。
而使用+符号(重点)
select F_CID=(SELECT ','+F_CID
FROM [Test].[dbo].[Test_Sum] for xml path(''))
返回的却是一个字符串
4,知识点解析 stuff('字段‘,开始位置,删除几个元素,插入元素);
stuff((select ',' + F_CID from Test_Sum where F_Name =
a.F_Name for xml path('')),1,1,'')
意思是删除字符串的第一个位置的逗号并插入空格。
5,整个语句解析。
1) 按照F_name字段分组,
2) 每组数据以" , " +F_CId的形式依次相加,并去除去除第一个逗号
————————————————
版权声明:本文为CSDN博主「左左在右边」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41609327/article/details/107326652