string按功能与其他聚合函数串联连接

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服务器上使用查询来实现相同的功能.

Ric*_*iwi 7

样本表

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)

  • 你可以解释这里到底发生了什么......我的表不是真正的表,它是多个表连接的结果集. (2认同)