使用聚合的SQL查询以逗号分隔结果

时间:2017-11-28 19:24:33

标签: sql-server tsql aggregate-functions comma

请原谅我对SQL查询缺乏了解。我有两张桌子 -

enter image description here

enter image description here

我需要一个查询来生成输出,如下所示 -

enter image description here

有可能吗?

注意:(在将其标记为重复之前) - 我已经看到很多关于SO的其他问题,需要为更简单的场景显示逗号分隔的结果,但我认为这个有点不同因为result = case when (1..3).include?(roll1) && roll2.eql?(1) "Low / Low" else raise "invalid comparison" end 上的分组和Artist上的汇总。

1 个答案:

答案 0 :(得分:2)

简单。

-- Your sample data
declare @artist table (id int, name varchar(10));
insert @artist values (1,'A'),(2,'B');

declare @album table (id int, artistId int, name varchar(10), sold int);
insert @album values (1,1,'P',2), (2,1,'Q',3), (3,2,'X',1), (4,2,'Y',3),(5,2,'Z',2);

--solution
select 
  artist    = ar.name,
  totalSale = sum(al.sold),
  albums    = stuff(max(concatAlbums.albumList),1,1,'')
from @artist ar
join @album al on ar.id = al.artistId
cross apply   
(
    select ','+name
    from @album al2
    where al2.artistId  = ar.id
    for xml path('')
) concatAlbums(albumList)
group by ar.name;

<强>结果:

artist     totalSale   albums
---------- ----------- -------
A          5           P,Q
B          6           X,Y,Z