根据截止日期将事务记录从事务表移动到存档表 - SQL Server

时间:2018-05-28 16:02:28

标签: sql-server tsql stored-procedures

在我们的应用程序中,我们有一个包含大量数据的事务表。因此,我们决定根据提供的截止日期将旧数据移动到存档表(例如,如果截止日期是2013年,则将2013年之前的所有记录移至存档表)。我们有以下三个表:Transaction_Details,Transaction_Headers和Bill_Mapping(我没有包括所有表和所有列):

enter image description here

Transaction_Details表包含ID(交易ID),Transaction_Header_ID和其他详细信息。

Transaction_Headers包含有关该交易的其他详细信息 (例如Payment_Type_IDGL_Date(我们希望将截止值与此列进行比较)等。)

Bill_Mapping表包含与其他交易(贷记和借记)和Amount的交易映射。

我需要一个存储过程,它将根据提供的截止日期返回所有交易(截止日期以下的所有交易)。

示例:截止日期为2013-11-01 00:00:00.000

现在,如果您在上面的Transaction_Details表(屏幕截图)中看到,标记为绿色的ID的GL_Date(在Transaction_Headers表中)小于截止日期。

现在在Bill_Mapping表中,您可以看到交易ID 5434125链接到5420422(GL_Date:2013-10-05)和5415415(GL_Date:2013-12-01)。所以5420422低于截止日期,5415415高于截止日期。在这里,我不想将这3个交易ID移动到存档表(因为即使5434125和5420422低于截止日期。但5434125部分链接到5415415,这高于截止日期)。

因此规则是基于bill_mapping表,即使一个交易ID低于截止日期并且部分映射到截止日期之上的任何交易。然后,我们不必将所有链接的事务移动到存档表。

0 个答案:

没有答案