请原谅我对SQL查询缺乏了解。我有两张桌子 -
和
我需要一个查询来生成输出,如下所示 -
有可能吗?
注意:(在将其标记为重复之前) - 我已经看到很多关于SO的其他问题,需要为更简单的场景显示逗号分隔的结果,但我认为这个有点不同因为result = case
when (1..3).include?(roll1) && roll2.eql?(1)
"Low / Low"
else
raise "invalid comparison"
end
上的分组和Artist
上的汇总。
答案 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