我有一个包含历史数据的表。每天都会添加相同的员工名单和新的日期(每天有 1200-12500 名员工,但今天可能只有少数员工是新添加的,或者他们可能昨天离开公司而没有显示在今天的名单上)。
我想知道每天哪些员工不在昨天的名单上,这是新员工,员工昨天出现但今天没有,因为他们离开了公司。我已经尝试了以下但不高兴请帮助我的历史表如下所示,我需要一个脚本来仅获取 ID4 和 ID5 的行。
员工编号 | 员工姓名 | 人口普查日期 | |
---|---|---|---|
ID1 | 职员1 | 2021 年 2 月 3 日 | |
ID1 | 职员1 | 2021 年 3 月 3 日 | |
ID2 | 职员2 | 2021 年 2 月 3 日 | |
ID2 | 职员2 | 2021 年 3 月 3 日 | |
ID3 | 职员3 | 2021 年 2 月 3 日 | |
ID3 | 职员3 | 2021 年 3 月 3 日 | |
ID4 | 职员4 | 2021 年 2 月 3 日 | 今天不显示 |
ID5 | 员工5 | 2021 年 3 月 3 日 | 今天新增 |
ID6 | 员工6 | 2021 年 2 月 3 日 | |
ID6 | 员工6 | 2021 年 3 月 3 日 | |
ID7 | 员工7 | 2021 年 2 月 3 日 | |
ID7 | 员工7 | 2021 年 3 月 3 日 |
SELECT StaffID, StaffNAME, CensusDate
FROM table1 AS A
LEFT JOIN table1 AS B
ON A.StaffID = B.StaffID AND A.date = GETDATE()) AS date)
and B.date = CAST(DATEADD(day, -1, convert(date, GETDATE())) AS date)
AND A.staffID IS NULL
不确定我是否完全理解您的意图或 Table1 和 Table2 之间的区别。如果您试图仅查找在过去两天内仅出现一次的 ID。
可能有一种更简单的方法,但我认为这可以实现您想要的: