· 6 years ago · Mar 21, 2019, 09:06 AM
1--Ñоздать временную таблицу ID Ð´Ð»Ñ Ð¿Ð¾Ñледних активированных платежей
2IF OBJECT_ID('tempdb..#old_51') IS NOT NULL
3 DROP TABLE #old_51
4GO
5
6IF OBJECT_ID('tempdb..#last_51') IS NOT NULL
7 DROP TABLE #last_51
8GO
9
10TRUNCATE TABLE SendPayment_test_archive
11GO
12
13CREATE TABLE #last_51 (
14 table_id BIGINT
15)
16GO
17--Ñоздать временную таблицу ID Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… платежей подлежащих архивированию
18--
19
20CREATE TABLE #old_51 (
21 table_id BIGINT
22)
23GO
24--выбираем вÑе поÑледние запиÑи Ñо ÑтатуÑом 51 и копируем talbe_id запиÑей в #last_51
25INSERT INTO #last_51
26 SELECT
27 new.table_ID
28 FROM baseSOD.dbo.SendPayment_test new
29 LEFT JOIN baseSOD.dbo.SendPayment_test old
30 ON (old.cardNumber = new.cardnumber
31 AND new.ChangeStatusTime < old.ChangeStatusTime
32 AND new.Status = old.Status
33 )
34 WHERE old.table_id IS NULL
35 AND new.Status = 51
36GO
37 /*
38--Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸
39SELECT
40 l.table_id last51
41FROM #last_51 l
42GO
43 */
44--ÑопоÑтавлÑем поÑледние активации Ñо вÑеми активациÑми в sendpayment Ñтарше 35 дней
45INSERT INTO #old_51
46 SELECT
47 spt.table_ID
48 FROM baseSOD.dbo.SendPayment_test spt
49 LEFT JOIN #last_51 last
50 ON spt.table_ID = last.table_id
51 WHERE spt.Status = 51
52 AND spt.ChangeStatusTime < DATEADD(DAY, -35, GETDATE())
53 AND last.table_id IS NULL
54GO
55 /*
56--Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸
57SELECT
58 table_id old51
59FROM #old_51
60GO
61*/
62--копировать Ñтарые запиÑи в архив
63SET IDENTITY_INSERT dbo.SendPayment_test_archive ON
64GO
65INSERT INTO SendPayment_test_archive (table_ID, SystemId, PaymentId, CardNumber, Summ, AgentTime, Status, Accept, ChangeStatusTime)
66 SELECT
67 spt.table_ID
68 ,spt.SystemId
69 ,spt.PaymentId
70 ,spt.CardNumber
71 ,spt.Summ
72 ,spt.AgentTime
73 ,spt.Status
74 ,spt.Accept
75 ,spt.ChangeStatusTime
76 FROM SendPayment_test spt
77 INNER JOIN #old_51
78 ON spt.table_ID = #old_51.table_id
79GO
80SET IDENTITY_INSERT dbo.SendPayment_test_archive OFF
81GO
82
83 /*
84SELECT
85 *
86FROM baseSOD.dbo.SendPayment_test_archive spta
87GO
88*/
89DELETE FROM baseSOD.dbo.SendPayment_test
90 WHERE EXISTS (SELECT o.table_id FROM #old_51 o)
91GO
92/*
93SELECT *FROM baseSOD.dbo.SendPayment_test spt
94 GO
95 */