日期更新来自多个表

时间:2015-11-18 15:43:18

标签: sql-server database

我的要求是这样的

我有3个表1,表2和表3,所有3个表之间的地址编号是通用的

表1将地址编号作为主键,因此每个地址编号只有一条记录。表2和表3具有每个地址编号的多个记录

我需要根据表2中从表1中获取的每个地址编号的生效日期来删除表3中的section列。

因此,我们需要从表1中获取地址编号,将其传递给表2并过滤该地址编号的记录数。在适应性之后,如果表2中有多个记录,我必须获取最低生效日期。然后将地址编号和生效日期作为> =生效日期传递到表3并过滤地址编号的记录和日期大于或等于生效日期。将段值从表2传递到表3的所有过滤记录的section列。

示例 表格结构:

表1 :(一列 - 地址编号) 地址编号 - 100

从表1 - 100

中获取地址编号

表2 :( 3列 - 地址编号,部分,生效日期) 地址编号 - 100 部分 - A. 生效日期 - 2014年1月1日

地址编号 - 100 部分 - B. 生效日期 - 2015年1月1日

在表2中,您有2条记录,如上所示地址编号100,其中A和B部分以及不同的日期。

从这2条记录中选择最短生效日期(2014年1月1日是生效日期最短)。将地址编号作为 - 100,将日期作为> = 1/1/2014传递到表3(> =应该是硬编码的)

表3 :( 3列 - 地址编号,部分,日期)

地址编号 - 100 部分 - 日期2/2/2014

地址编号 - 100 部分 - 日期 - 2015年2月2日

地址编号 - 100 部分 - 日期3/3/2015

表3由地址编号100的3条记录组成,其中包含不同的日期,而没有“条目”列的值

我们将地址编号和> =生效日期传递给表3并过滤记录。根据上面的例子,所有3个记录都是> = 1/1/2014。现在将所有3条记录的表1中的1/1/2014(值= A)的Section值传递给表3。

接下来通过表2(2015年1月1日)的第二个生效日期。将地址编号和日期传递为> = 1/1/2015。根据上面的例子,将过滤2条记录。 2015年2月2日和2015年3月3日。将2015年1月1日的章节值(B部分)传递给2015年2月2日和2015年3月3日记录

表3中的预期结果

表3:

地址编号 - 100 部分 - A. 日期2/2/2014

地址编号 - 100 部分 - B. 日期2/2/2015

地址编号 - 100 部分 - B. 日期2015年3月3日

0 个答案:

没有答案
相关问题