我有一张与以下表格相似的表格。在此表中,我要提取同一个人行的最新ExeDate。我已经尝试了很多次。我不是很成功。
注意:在此处用top(1)减去最后一个日期并不重要。只发布同一个人的最新ExeDate。
我的桌子:
结果:
您希望每个人的行都有最新的exeDate
。
一种常见的跨数据库解决方案是使用子查询进行过滤:
select t.*
from mytable t
where t.exeDate = (
select max(t1.exeDate)
from mytable t1
where t1.name = t.name and t1.surname = t.surname
)
[当行的行数大于一列的值不同时(例如,某人的位置可能已更改),这特别方便。
这不是简单的聚合吗?
select name, surname, postion, max(exedate)
from table t
group by name, surname, postion;
如果您正在寻找最新的ExeDate作为职位,请使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by postion order by ExeDate desc) as seq
from table t
) t
where seq = 1;