一尘不染

SQL Server:GROUP BY中的最后一个条目

sql

我在MSSQL2005中有下表

id | business_key | result
1 | 1 | 0
2 | 1 | 1
3 | 2 | 1
4 | 3 | 1
5 | 4 | 1
6 | 4 | 0

现在我想根据business_key分组,返回具有最高ID的完整条目。所以我的预期结果是:

business_key | result
1 | 1
2 | 1
3 | 1
4 | 0

我敢打赌,有一种方法可以实现这一目标,但目前我还看不到。


阅读 130

收藏
2021-05-05

共1个答案

一尘不染

替代解决方案,可能会给您带来更好的性能(双向测试并检查执行计划):

SELECT
     T1.id,
     T1.business_key,
     T1.result
FROM
     dbo.My_Table T1
LEFT OUTER JOIN dbo.My_Table T2 ON
     T2.business_key = T1.business_key AND
     T2.id > T1.id
WHERE
     T2.id IS NULL

该查询假定该ID是唯一值(至少对于任何给定的business_key而言),并将其设置为NOT NULL。

2021-05-05