Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --создать временную таблицу ID для последних активированных платежей
- IF OBJECT_ID('tempdb..#old_51') IS NOT NULL
- DROP TABLE #old_51
- GO
- IF OBJECT_ID('tempdb..#last_51') IS NOT NULL
- DROP TABLE #last_51
- GO
- TRUNCATE TABLE SendPayment_test_archive
- GO
- CREATE TABLE #last_51 (
- table_id BIGINT
- )
- GO
- --создать временную таблицу ID для активированных платежей подлежащих архивированию
- --
- CREATE TABLE #old_51 (
- table_id BIGINT
- )
- GO
- --выбираем все последние записи со статусом 51 и копируем talbe_id записей в #last_51
- INSERT INTO #last_51
- SELECT
- new.table_ID
- FROM baseSOD.dbo.SendPayment_test new
- LEFT JOIN baseSOD.dbo.SendPayment_test old
- ON (old.cardNumber = new.cardnumber
- AND new.ChangeStatusTime < old.ChangeStatusTime
- AND new.Status = old.Status
- )
- WHERE old.table_id IS NULL
- AND new.Status = 51
- GO
- /*
- --для отладки
- SELECT
- l.table_id last51
- FROM #last_51 l
- GO
- */
- --сопоставляем последние активации со всеми активациями в sendpayment старше 35 дней
- INSERT INTO #old_51
- SELECT
- spt.table_ID
- FROM baseSOD.dbo.SendPayment_test spt
- LEFT JOIN #last_51 last
- ON spt.table_ID = last.table_id
- WHERE spt.Status = 51
- AND spt.ChangeStatusTime < DATEADD(DAY, -35, GETDATE())
- AND last.table_id IS NULL
- GO
- /*
- --для отладки
- SELECT
- table_id old51
- FROM #old_51
- GO
- */
- --копировать старые записи в архив
- SET IDENTITY_INSERT dbo.SendPayment_test_archive ON
- GO
- INSERT INTO SendPayment_test_archive (table_ID, SystemId, PaymentId, CardNumber, Summ, AgentTime, Status, Accept, ChangeStatusTime)
- SELECT
- spt.table_ID
- ,spt.SystemId
- ,spt.PaymentId
- ,spt.CardNumber
- ,spt.Summ
- ,spt.AgentTime
- ,spt.Status
- ,spt.Accept
- ,spt.ChangeStatusTime
- FROM SendPayment_test spt
- INNER JOIN #old_51
- ON spt.table_ID = #old_51.table_id
- GO
- SET IDENTITY_INSERT dbo.SendPayment_test_archive OFF
- GO
- /*
- SELECT
- *
- FROM baseSOD.dbo.SendPayment_test_archive spta
- GO
- */
- DELETE FROM baseSOD.dbo.SendPayment_test
- WHERE EXISTS (SELECT o.table_id FROM #old_51 o)
- GO
- /*
- SELECT *FROM baseSOD.dbo.SendPayment_test spt
- GO
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement