mssql sql server 字符串聚合的方式分享


摘要:
下文讲述一次面试经历:
需要对一张表,按某一个类型,对字符串进行聚合(将字符串叠加起来),
———————————-
通常我们都是采用sum count avg 对数值字段进行聚合,
下文将讲述我们对字符串列进行聚合的方式


例:

 CREATE TABLE A(
    [keyId] int,
    [sort_id] int,
    [qty] int,
    [info] nvarchar(50) 
)  
GO 
insert into A ([keyId],[sort_id],[qty],[info]) VALUES (1, 6,100, N'深圳')
insert into A  ([keyId],[sort_id],[qty],[info]) VALUES (2, 6,200, N'合肥')
insert into A  ([keyId],[sort_id],[qty],[info]) VALUES (3, 6,500, N'长沙')
insert into A  ([keyId],[sort_id],[qty],[info]) VALUES (4, 12,600, N'贵阳')

SELECT c.sort_id
,SUM(c.qty) AS qtyAll
,STUFF((SELECT ','+ b.[info] FROM A AS b WHERE c.sort_id=b.sort_id FOR XML PATH('')),1,1,'')  AS [info] 
FROM A AS c GROUP BY c.sort_id

go
truncate table A
drop table A 
go

-------输出集合-----
/*
sort_id    qtyAll    info
6          800      深圳,合肥,长沙
12         600      贵阳
*/