sqlserver 中的group_contact实现-多列合并

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的形式依次相加,并去除去除第一个逗号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左左在右边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值