Sar*_*rah 7 sql t-sql sql-server aggregate-functions sql-server-group-concat
是否可以通过函数(如sum,avg,count等)将字符串与一个或多个其他组连接起来.
说我有下表
Id Name Order Value
1 a 1 100
2 b 2 200
3 c 1 300
4 d 1 100
5 e 2 300
Run Code Online (Sandbox Code Playgroud)
现在,如果我希望结果是这种类型的东西
Order Name Value Count
1 a,c,d 500 3
2 b,e 500 2
Run Code Online (Sandbox Code Playgroud)
如何在SQL服务器上使用查询来实现相同的功能.
样本表
create table t123 (Id int, Name varchar(10), [Order] int, Value int)
insert t123 select
1,'a','1',100 union all select
2,'b','2',200 union all select
3,'c','1',300 union all select
4,'d','1',100 union all select
5,'e','2',300
Run Code Online (Sandbox Code Playgroud)
查询SQL Server 2005及更高版本
select a.[order], STUFF((
select ','+b.name
from t123 b
where b.[order] = a.[order]
order by b.name
for xml path('a'), type).value('.','nvarchar(max)'),1,1,'') Name,
SUM(a.value) value,
COUNT(*) [count]
from t123 a
group by a.[order]
Run Code Online (Sandbox Code Playgroud)
产量
order Name value count
----------- ------------ ----------- -----------
1 a,c,d 500 3
2 b,e 500 2
Run Code Online (Sandbox Code Playgroud)