我有一个这样的表:
Id UserId EventTypeId TimeStamp
-----------------------------------------------
344 29 3 2013-01-08 16:28:52.557
350 12 3 2013-01-08 17:06:15.967
441 1 3 2013-01-09 11:00:43.947
461 1 3 2013-01-09 13:29:19.143
和第二个表:
UserId TimeStamp
--------------------------------
1 2014-11-17 10:01:27.443
29 2013-01-05 16:28:52.557
如果第一个表中该 UserId 的计数超过 20(从 0 开始或在第二个表的新月份之后),则将在第二个表中插入数据。
第一个表是注册表。员工注册用户,当注册人数达到20人以上时,将进行晋升。促销日期已经并将插入到第二个表中。
例如,如果他/她将像这样注册用户:
March: 5
April: 16
May: 17
4 月 30 日 59:59:59 之后,该时间必须插入到第二个表中,并且在此之后计数必须从头开始。
我怎样才能做到这一点?
最佳答案
我的理解是,当您的第一个表(注册)出现新条目时,您希望同时在第二个表中插入记录。您可以通过使用插入触发器来实现此目的。 在这里,插入表包含现有记录和新记录。
CREATE TRIGGER trig_check_count
ON [Registration]
FOR INSERT
AS
Begin
DECLARE @USERID INT, @COUNT INT
--FIND USERID FOR INSERTED RECORD
Select @USERID = I.USERID
from Inserted i
Left Join registration R
on R.ID = I.ID AND R.USERID = I.USERID
where R.ID is null
--COUNT - START FROM THE PREVIOUS PROMOTION DATE till current date
SELECT @COUNT = COUNT(I.USERID)
FROM INSERTED I
LEFT JOIN PROMOTION P ON I.USERID = P.USERID
WHERE USERID = @USERID
AND I.TIMESTAMP > MAX(P.TIMESTAMP)
-- INSERT TO SECOND TABLE IF COUNT > 20
IF(@COUNT > 20)
BEGIN
INSERT INTO PROMOTION
SELECT @USERID,GETDATE()
END
End
关于sql - 比较日期然后插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34670645/