我需要每人每月获得一行,该行应该是该月的最大日期。
可用数据:
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)
)
演示