每人每月最新一行



我需要每人每月获得一行,该行应该是该月的最大日期。

可用数据:

person  date         value
a       jan/1/2019     10
a       jan/2/2019     20
a       feb/3/2019     30
b       jan/10/2019    20
b       jan/20/2019    30
b       feb/1/2019     40
b       feb/12/2019    30

期望输出:

a       jan/2/2019     20
a       feb/3/2019     30
b       jan/20/2019    30
b       feb/12/2019    30

我无法弄清楚如何实现这一目标。任何帮助都非常感谢。

您可以在子查询中使用聚合并通过运算符连接它们in

select *
from tab
where (person,date) in
(
select person,max(date)
from tab
group by person,month(date),year(date)
)

演示

最新更新