sql 使用max和group by 同时查询这条记录的其他信息

需求是这样的
SELECTMAX (discharge_amount),CHECK_YEARFROMims_source_item_summaryGROUP BYCHECK_yearORDER BY CHECK_YEAR
查询某个时间内最大的值,结果如下:

sql 使用max和group by 同时查询这条记录的其他信息

文章插图
但是我需要不仅仅查时间和最大值,还想要这条记录的id信息或者其他信息 。大概意思是这样 :
SELECTID,MAX (discharge_amount),CHECK_YEARFROMims_source_item_summaryGROUP BYCHECK_yearORDER BY CHECK_YEAR
但是大家知道聚合函数max 是不允许这样使用的 。得需要这样写sql :
SELECT ID,discharge_amount,check_yearFROMims_source_item_summary AWHEREdischarge_amount IN (SELECTMAX (discharge_amount)FROMims_source_item_summary bWHEREA .check_year = b.check_year//这个很关键GROUP BYcheck_year)ORDER BY check_year
结果如下 :
如果没有上面的 A . = b. 时间约束 则会出现如下情况:
【sql 使用max和group by 同时查询这条记录的其他信息】2017 的37 并不是年份的最大值,只是因为和2019的最大值相等而被选择 参考 以上