[英]SQL query to fetch distinct values from same table
假设我有这张表:employeetable:
空的 | 加入日期 | 地点 | 人力资源更新日期 | 变化 |
---|---|---|---|---|
1 | 2002-01-05 | 德里 | 2021-03-01 | 新的 |
2 | 2009-09-09 | 孟买 | 2021-03-05 | 新的 |
1 | 2010-06-27 | 海得拉巴 | 2021-03-03 | 转移 |
2 | 2015-11-02 | 德里 | 2021-03-06 | 转移 |
3 | 2020-01-01 | 孟买 | 2021-03-06 | 新的 |
4 | 2007-07-30 | 德里 | 2021-03-04 | 新的 |
我想从这个表中获取数据,其中 empid 在 (1,2,4) 中。 这将返回:
空的 | 加入日期 | 地点 | 人力资源更新日期 | 变化 |
---|---|---|---|---|
1 | 2002-01-05 | 德里 | 2021-03-01 | 新的 |
2 | 2009-09-09 | 孟买 | 2021-03-05 | 新的 |
1 | 2010-06-27 | 海得拉巴 | 2021-03-03 | 转移 |
2 | 2015-11-02 | 德里 | 2021-03-06 | 转移 |
4 | 2007-07-30 | 德里 | 2021-03-04 | 新的 |
但我只需要没有重复条目的最新记录:
空的 | 加入日期 | 地点 | 人力资源更新日期 | 变化 |
---|---|---|---|---|
1 | 2010-06-27 | 海得拉巴 | 2021-03-03 | 转移 |
2 | 2015-11-02 | 德里 | 2021-03-06 | 转移 |
4 | 2007-07-30 | 德里 | 2021-03-04 | 新的 |
如何做到这一点?
你可以用top with ties
select top(1) with ties *
from employeetable
where empid in (1,2,4)
order by row_number() over(partition by empid order by joindate desc)
您可以使用WHERE
子句轻松实现此目的。
select * from
employeetable et1
where
joindate = (
select max(joindate)
from employeetable et2
where et1.empid = et2.empid
)
and
empid in (1,2, 4);
或者为了更精确的结果
select * from
employeetable et1
where
joindate = (
select max(joindate)
from employeetable et2
where et1.empid = et2.empid
)
and
HRupdatedate = (
select max(HRupdatedate)
from employeetable et2 where et1.empid = et2.empid
)
and
empid in (1,2, 4);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.