发布
社区首页 >问答首页 >SQL Server中带有sum的行的逗号分隔值

SQL Server中带有sum的行的逗号分隔值
EN

Stack Overflow用户
提问于 2020-04-26 03:43:18
回答 4查看 186关注 0票数 1
代码语言:javascript
代码运行次数:0
复制
create table #t(org varchar(50), area int)

insert into #t values ('a', 500), ('b', 200), ('c', 400)

select * from #t

输出:

代码语言:javascript
代码运行次数:0
复制
org     area
--------------
a       500
b       200
c       400

我想将输出转换为以下格式:

代码语言:javascript
代码运行次数:0
复制
org         area
-----------------
a,b,c       1100

也就是说,用逗号分隔所有的组织和它的面积值的总和。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-26 20:33:03

子查询确实不是必须的:

代码语言:javascript
代码运行次数:0
复制
select stuff((select ','+t1.org from #t t1 for xml path('')), 1, 1, '') as org, 
       sum(area) as area
from #t t;
票数 1
EN

Stack Overflow用户

发布于 2020-04-26 03:56:13

使用子查询/CTE、窗口函数SUM() OVER()STRING_AGG()

代码语言:javascript
代码运行次数:0
复制
create table #t(org varchar(50), area int)
insert into #t values ('a',500),('b',200),('c',400);


select string_agg(org, ',') org, area
from
(
  select org, sum(area) over() area
  from #t
)t
group by area

或者

代码语言:javascript
代码运行次数:0
复制
select org, sum(area) area
from
(
select stuff(
      (select ',' + org from #t  for xml path('')), 1, 1, '') org, area
from #t tt
) t
group by org
票数 1
EN

Stack Overflow用户

发布于 2020-04-26 03:53:37

如果使用sql server 2017以上版本,则可以使用String_agg()

代码语言:javascript
代码运行次数:0
复制
create table #t(org varchar(50), area int)
insert into #t values ('a',500),('b',200),('c',400)
select String_agg(org, ',') as org, Sum(area) as sumarea 
from #t
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61431600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档