使用分组依据在最大其他列的基础上获得顶列?

问题描述 投票:-1回答:2

SQL Server,如何使用分组依据获得基于最大其他列的顶部列?

我的原始数据:

DECLARE @TB TABLE (ID INT, APP VARCHAR(25), PRICE MONEY)
INSERT INTO @TB
VALUES
(1, 'Apple', 10),
(1, 'Banana', 30),
(1, 'Orange', 20),
(2, 'Apple', 20),
(2, 'Banana', 30),
(2, 'Orange', 40)

enter image description here

这就是我想要的:

enter image description here

说明:

TOP_APP =香蕉,因为MAX(PRICE)GROUP BY ID,

总计= 60,因为SUM(PRICE)GROUP BY ID。

sql-server
2个回答
0
投票
您的问题充满了错误。根据我的假设,您想要的结果是

SELECT identity (int,1,1) as ID, APP AS TOP_APP ,SUM(PRICE) AS TOTAL INTO #T FROM @TB GROUP BY APP order by SUM(PRICE) select * from #t


0
投票
您可以使用ROW_NUMBER和聚合来获得所需的输出-

DEMO HERE

SELECT A.ID,A.App,A.SUM FROM ( select *, SUM(Price) OVER(PARTITION BY ID) SUM, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Price DESC) RN from @tb )A WHERE RN = 1

© www.soinside.com 2019 - 2024. All rights reserved.