sql - 如果发生更改,检查数据并禁用以前的记录并插入新的
问题描述
我必须创建一个 ssis 包,它将临时从特定位置获取文件,因为文件的频率不固定,我们必须每天检查文件,如果文件可用,则将数据加载到表中。
我已经创建了 ssis 包,我将在其中获取文件并将其加载到暂存表中,该部分现在已完成。
在以下情况下,我需要您的帮助,我必须从暂存表中加载 maintbl 结构中的数据,如下所示:
DECLARE @maintbl TABLE
(
id INT IDENTITY,
code VARCHAR(10),
NAME VARCHAR(100),
countrylocated VARCHAR(10),
validfrom DATE,
validto DATE
)
我想创建一个过程,并将在 ssis 包内的暂存中加载数据后调用该过程。
场景如下:
- 截至 2019-04-10 记录在案
- 2019-04-01, ax,auxy,ch
- 值应该插入到表 @maintbl
桌子:
code name countrylocated validfrom validto
-------------------------------------------------------------
ax auxy ch 2019-04-01 9999-12-31
于 2019-04-16 入档(日期无变化数据为变化)
2019-04-15, ax,auxy,ch
不应在表中插入任何值@maintbl
,也不应更新
code name countrylocated validfrom validto
-----------------------------------------------------------
ax auxy ch 2019-04-01 9999-12-31
于 2019-06-20 入档(日期无变化数据为变化)
2019-06-19, ax,auxy,IN
具有相同交换代码的旧记录应于 2019-06-18 关闭,并应插入新记录 2019-06-19 至 9999-12-31
code name countrylocated validfrom validto
----------------------------------------------------------
ax auxy ch 2019-04-01 2019-06-18
ax auxy IN 2019-06-19 9999-12-31
列代码是检查记录的列
解决方案
推荐阅读
- c++ - 为什么使用 LLVM 时 std::ifstream 的缓冲会“中断”std::getline?
- apache - 将所有流量转发到一个子文件夹,将一个子文件夹转发到另一个子文件夹
- swift - 反正有没有迅速增加指数?
- maps - heremap 实现中的重叠问题
- asp.net-mvc - 如何在 Asp.net 中修复端口号
- python - Python 中的外部文件 - 未正确写入外部文件
- excel - Excel 2016 vba 宏将边框设置为内部过滤单元格的单元格范围会产生错误(使用 Excel 2013 一切都很好)
- html - 将 HTML + CSS 添加到 wix
- php - 生成 Symfony4 PDF 但有 HTTP500
- python - Aiokafka 库不会异步消费消息