Select 最大值并仅按一列分组

Select max and group by only one column

我在使用 max 函数时难以 select 多列,因为我只希望它按一列分组。

这是我的数据集:

UPDATED_DATE    ACCOUNT_NUMBER     LIMIT
------------    --------------     -----
2020-02-01      ABC123             100
2020-02-06      ABC123             300
2020-03-04      XYZ987             500
2020-05-19      XYZ987             100

这是我希望看到的结果:

UPDATED_DATE    ACCOUNT_NUMBER     LIMIT
------------    --------------     -----
2020-02-06      ABC123             300
2020-05-19      XYZ987             100

感谢您的帮助。

您可以使用 window 函数:

select t.*
from (select t.*, row_number() over partition by account_number order by updated_date desc) as seqnum
      from t
     ) t
where seqnum = 1;

或者 -- 使用正确的索引通常性能稍好一些的方法 --:

select t.*
from t
where t.updated_date = (select max(t2.updated_date) from t t2 where t2.account_number = t.account_num);

或者,如果您不喜欢子查询并且不太关心性能:

select top (1) with ties t.*
from t
order by row_number() over (partition by account_number order by updated_date desc);