首页 > 解决方案 > 根据截止日期将事务记录从事务表移动到存档表 - SQL Server

问题描述

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

在此处输入图像描述

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 低于截止日期并且部分映射到任何高于截止日期的交易。这样一来,我们就不必将所有链接的事务移动到存档表。

标签: sql-servertsqlstored-procedures

解决方案


推荐阅读