簡體   English   中英

SQL 查詢從同一個表中獲取不同的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM