首页 > 解决方案 > 如果发生更改,检查数据并禁用以前的记录并插入新的

问题描述

我必须创建一个 ssis 包,它将临时从特定位置获取文件,因为文件的频率不固定,我们必须每天检查文件,如果文件可用,则将数据加载到表中。

我已经创建了 ssis 包,我将在其中获取文件并将其加载到暂存表中,该部分现在已完成。

在以下情况下,我需要您的帮助,我必须从暂存表中加载 maintbl 结构中的数据,如下所示:

DECLARE @maintbl TABLE 
( 
   id             INT IDENTITY, 
   code           VARCHAR(10), 
   NAME           VARCHAR(100), 
   countrylocated VARCHAR(10), 
   validfrom      DATE, 
   validto        DATE 
) 

我想创建一个过程,并将在 ssis 包内的暂存中加载数据后调用该过程。

场景如下:

桌子:

  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

列代码是检查记录的列

标签: sqlsql-server

解决方案


推荐阅读