Sql server 使用WHERE NOT EXISTS和LAG使用新行更新表

Sql server 使用WHERE NOT EXISTS和LAG使用新行更新表,sql-server,Sql Server,我正在使用SQL Server 2016 我有一个HR csv,每天导入到导入表中 我只想将某些列的更改添加到我的HR表中。 我在查询中使用了下面的INSERT,但当一个人设置了一个位置,然后稍后恢复到原始类别和等级时,具有原始值的行不会出现。想知道我是否可以在WHERE NOT EXISTS部分使用滞后 INSERT INTO HRTable (HR_ImportDate,HR_EmpID,HR_Employee,HR_Category,HR_Grade) SELECT IMP_ImportD

我正在使用SQL Server 2016 我有一个HR csv,每天导入到导入表中 我只想将某些列的更改添加到我的HR表中。
我在查询中使用了下面的INSERT,但当一个人设置了一个位置,然后稍后恢复到原始类别和等级时,具有原始值的行不会出现。想知道我是否可以在WHERE NOT EXISTS部分使用滞后

INSERT INTO HRTable (HR_ImportDate,HR_EmpID,HR_Employee,HR_Category,HR_Grade)
SELECT IMP_ImportDate,IMP_EmpID,IMP_Employee,IMP_Category,IMP_Grade
FROM ImportTable
WHERE NOT EXISTS (SELECT * FROM HRTable  
WHERE (HR_EmpID=IMP_EmpID) and (HR_Category=IMP_Category) and (HR_Grade=IMP_Grade))
参赛作品范例;不会返回最后一行,因为它与第一行具有相同的值

这是来自csv集成的数据:

Date  ID  Emp  Cat  Grade
20/3  401  John PT  P10
21/3  401  John FT  F10
22/4  401  John FT  F10
23/4  401  John PT  P10
24/4  401  John PT  P10
25/4  401  John PT  P10
26/4  401  John PT  P10
27/4  401  John PT  P10
这些是需要添加到HRTable的行

Date  ID  Emp  Cat  Grade
20/3  401  John PT  P10
21/3  401  John FT  F10
23/4  401  John PT  P10

最好从提供数据开始。。。您可以使用
sqlfiddle.com
rextester.com
单个EMP是否可以在同一个月内在两个不同的类别和等级中行动?是的,他们可以在同一个月内在不同的类别和等级中行动。该示例显示了几天内的变化,但通常情况下,某些人可能会在担任更高职位的两周内发生变化,然后在经理休假归来时返回。您也可以使用top 1 where date谢谢,我尝试了滞后,但不起作用,您能否确认exists子句中top 1函数的上下文?