我只想提取与sql中的列具有相同内容的行之一

问题描述 投票:0回答:2

我有一张与以下表格相似的表格。在此表中,我要提取同一个人行的最新ExeDate。我已经尝试了很多次。我不是很成功。

注意:在此处用top(1)减去最后一个日期并不重要。只发布同一个人的最新ExeDate。

我的桌子:

enter image description here

结果:

enter image description here

sql greatest-n-per-group
2个回答
0
投票

您希望每个人的行都有最新的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
)

[当行的行数大于一列的值不同时(例如,某人的位置可能已更改),这特别方便。


0
投票

这不是简单的聚合吗?

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;
© www.soinside.com 2019 - 2024. All rights reserved.