求助:SQL group by 问题

表格如下:
图片说明
得出结果如下:
图片说明

求精简的SQL语句

 with a as(
select rank() over (partition by 商店 order by 商店,sum(价钱) desc) as rowid,
商店,sum(价钱) as 价钱和,备注 from 产品 group by 备注,商店),

b as(
select 商店,价钱和,备注 from a where rowid = 1),

c as(
select 商店,sum(价钱和) as 卖出价钱和 from a group by 商店)

select c.商店,c.卖出价钱和,b.备注 as 卖出价钱最高货物,b.价钱和 as 卖出最高价格货物价格之和 
from c inner join b on c.商店 = b.商店                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

你这属于竖表变横表,sqlserver的话提供了对应的方法,或者用case语句我可以实现,网上有例子

select 商店,count(货物) 卖出价钱和,max(备注) 卖出价钱最高货物,max(价钱) 卖出最高价格货物之和
GROUP BY 商店

select 商店,count(货物) 卖出价钱和,max(备注) 卖出价钱最高货物,max(价钱) 卖出最高价格货物之和
GROUP BY 商店

select 商店,count(货物) 卖出价钱和,max(备注) 卖出价钱最高货物,max(价钱) 卖出最高价格货物之和
GROUP BY 商店

select 商店, 卖出价钱和,卖出价钱最高货物, 卖出最高价格货物之和 from
((select 商店, sum(价钱) as 卖出价钱和 from table GROUP BY 商店) ta inner join
(select 商店, max(sum(价钱)) as 卖出最高价格货物之和, 备注 as 卖出价钱最高货物
from table GROUP BY 备注) tb on ta.商店 = tb.商店)