В нашем приложении у нас есть одна таблица транзакций, которая содержит огромные данные.Поэтому мы решили переместить старые данные в архивную таблицу на основе предоставленной даты отсечения (например, если дата отсечения 2013, а затем перенести все записи до 2013 года в таблицу архива).У нас есть следующие три таблицы Transaction_Details, Transaction_Headers и Bill_Mapping (я не включил все таблицы и все столбцы):

Transaction_Details
таблица содержит 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
видно, что идентификатор транзакции 5434125 связан с 5420422 (GL_Date: 2013-10-05) и 5415415 (GL_Date: 2013-12-01).Таким образом, 5420422 ниже даты отсечения, а 5415415 выше даты отсечения.Здесь я не хочу перемещать эти 3 идентификатора транзакции в архивную таблицу (потому что, хотя 5434125 и 5420422 находятся ниже даты отсечения. Но 5434125 частично связан с 5415415, который выше даты отсечения).
Так что правилона основе таблицы bill_mapping
, даже если один идентификатор транзакции находится ниже даты завершения и частично сопоставляется с любой транзакцией, которая находится выше даты окончания.Тогда нам не нужно перемещать все связанные транзакции в таблицу архива.