У меня есть таблица транзакций следующим образом. Чего я хотел бы добиться, так это иметь триггер для пометки пользователя, если он постоянно удерживал общий баланс более 1000 в течение последних 30 дней. как это можно сделать.
Примечание:
- если общий остаток любого дня в течение 30 дней меньше 1000, тогда он не будет помечен
userid, type, amount, datetime
user1, deposit, 200, 2019-01-01 00:00:00
user2, deposit, 200, 2019-01-01 00:00:00
user3, deposit, 200, 2019-01-01 00:00:00
user1, deposit, 900, 2019-01-02 01:00:00
(first deposit date that more than 1000, sum here 200+900 = 1100 > 1000, first date calculate from here)
user1, withdrawal, 200, 2019-01-03 02:00:00
(balance - 200 = 1000 < 1000, void first deposit deposit date)
user1, spend, 100, 2019-02-03 03:00:00
(balance - 200 = 900 < 1000)
user1, deposit, 1000, 2019-02-03
(first deposit date more than 1000 start from here again since 900 + 1000 = 1900 > 100)
user1, withdraw, 200, 2019-02-05
(still more than 1000, remain first deposit date)
user1, deposit, 1000, 2019-05-15
(balance of 1000 more than 3 months (from 2019-02-03, flag user)
CREATE TRIGGER TRG_Transaction_InsertUserSuspicious
ON [dbo].[tblTransactionLog]
AFTER INSERT
ON
BEGIN
SELECT
@InsertedUserID = [UserID],
FROM
inserted
IF (User hold balance of more than 1000 within 30 days)
BEGIN
UPDATE [dbo].[tblUser]
SET
[IsFlagged] = 1
WHERE
[UserID] = @InsertedUserID
UPDATE
END