代码之家  ›  专栏  ›  技术社区  ›  Dave

使用where not exists和lag用新行更新表

  •  0
  • Dave  · 技术社区  · 6 年前

    我正在使用SQL Server 2016 我有一个HR CSV,每天都导入到导入表中 我只想将某些列的更改添加到我的HR表中。
    我已经将下面的插入使用到查询中,但是当一个人执行了一个位置,然后返回到原始类别和以后的级别时,没有出现原始值的行。想知道我是否可以在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
    
    0 回复  |  直到 6 年前