sql-server - 使用 WHERE NOT EXISTS 和 LAG 使用新行更新表
问题描述
我正在使用 SQL Server 2016 我有一个 HR csv,我每天都将它导入到导入表中我只想将某些列的更改添加到我的 HR 表中。
我使用了以下 INSERT INTO 查询,但是当一个人担任一个职位,然后稍后恢复到原始类别和等级时,具有原始值的行不会出现。想知道我是否可以在 WHERE NOT EXISTS 部分使用 LAG
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
解决方案
推荐阅读
- vb.net - vb.net / excel dna 可选布尔参数
- java - 如何提高elasticsearch中的搜索速度(我的主要查询:术语查询和短语查询)?
- flutter - Flutter - 我能用 Flutter 创建一个模块并在我的 iOS 和 Android 项目中使用它吗?
- html - CSS 边框不能为 0
- python - Python将嵌套的for循环转换为对初始化的理解
- xml - 使用 XSLT 将 XML 转换为 XML 删除前导空格和零
- javascript - 实例上的正则表达式总匹配
- c++ - 行数和列数不匹配时输出不正确
- javascript - Multiple dropdown redirect to URL ( HTML )
- windows-10 - 无法通过 Anaconda Navigator 安装 Spyder