首页 > 解决方案 > SQL GroupBy 在一行中显示具有最大值的一行

问题描述

我有下表

 ID    Date  quantity storename  
 id1 01-01  1       A1  
 id2 01-03  3       A2  
 id1 01-03  40      A2  

我想看看

 ID    Date  quantity storename  
 id1 01-03  40       A2  
 id2 01-03  3        A2  

所以基本上我想按 ID 分组并找到最大(最新)日期。然后从该最大(最新)日期获取整个行数据。

我尝试了以下代码,但没有成功。

SELECT ID, max(Date), quantity, storename FROM table
GROUPBY ID

此外,是否可以获取所有列(如使用 *)而不是一一指定?

标签: sqloracle-sqldeveloper

解决方案


您可以使用聚合:

select t.*
from t
where t.date = (select max(t2.date) from t t2);

请确保日期没有时间部分。如果是这样:

select t.*
from t
where trunc(t.date) = (select trunc(max(t2.date)) from t t2);

推荐阅读