根据另一列的总和选择列

Mon*_*tor 6 sql t-sql

让我说我有

SalesManagerId, SaleAmount, ProductId
Run Code Online (Sandbox Code Playgroud)

我想总结SaleAmount每个(SalesManagerId,ProductId)并抓住ProductId最大值sum(SaleAmount).

这可能在一个查询中?

例:

1, 100, 1
1, 200, 1
1, 600, 1
1, 400, 2
2, 100, 3
3, 100, 4
3, 100, 4
2, 500, 6
3, 100, 5
Run Code Online (Sandbox Code Playgroud)

结果:

1, 900, 1
2, 500, 6
3, 200, 4
Run Code Online (Sandbox Code Playgroud)

Axn*_*Axn 4

如果您有可用的分析函数,则可以使用RANK()

就像是:

SELECT SalesManagerId, ProductId, Total
FROM (
  SELECT SalesManagerId,
         ProductId, 
         SUM(SaleAmount) as Total,
         RANK() OVER(PARTITION BY SalesManagerId 
                     ORDER BY SUM(SaleAmount) DESC) as R
  FROM <Table name>
  GROUP BY SalesManagerId, ProductId) as InnerQuery
WHERE InnerQuery.R = 1
Run Code Online (Sandbox Code Playgroud)