create table #t(org varchar(50), area int)
insert into #t values ('a', 500), ('b', 200), ('c', 400)
select * from #t
输出:
org area
--------------
a 500
b 200
c 400
我想将输出转换为以下格式:
org area
-----------------
a,b,c 1100
也就是说,用逗号分隔所有的组织和它的面积值的总和。
发布于 2020-04-26 20:33:03
子查询确实不是必须的:
select stuff((select ','+t1.org from #t t1 for xml path('')), 1, 1, '') as org,
sum(area) as area
from #t t;
发布于 2020-04-26 03:56:13
使用子查询/CTE、窗口函数SUM() OVER()
和STRING_AGG()
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
或者
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
发布于 2020-04-26 03:53:37
如果使用sql server 2017以上版本,则可以使用String_agg()
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
https://stackoverflow.com/questions/61431600
复制相似问题