在我们的应用程序中,我们有一个包含大量数据的事务表。因此,我们决定根据提供的截止日期将旧数据移动到存档表(例如,如果截止日期是2013年,则将2013年之前的所有记录移至存档表)。我们有以下三个表:Transaction_Details,Transaction_Headers和Bill_Mapping(我没有包括所有表和所有列):
Transaction_Details
表包含ID
(交易ID),Transaction_Header_ID
和其他详细信息。
Transaction_Headers
包含有关该交易的其他详细信息
(例如Payment_Type_ID
和GL_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低于截止日期并且部分映射到截止日期之上的任何交易。然后,我们不必将所有链接的事务移动到存档表。