我有一张这样的表:
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之后必须在第二张表格中插入,之后必须从头开始计算。
我该怎么做?
答案 0 :(得分:0)
我理解的是,当您的第一个表格(注册)出现新条目时,您希望在第二个表格中插入记录。您可以使用插入触发器来实现此目的。 这里,Inserted表包含现有加上新记录。
'Guru_ID'
答案 1 :(得分:0)
Hiren的触发器是一个好主意。我只是用另一种方式来做这件事,也许不像Hiren XD那样好。
select
usr.ID,
usr.USERID,
usr.EventTypeID,
usr.TimeStampID,
COUNT(case when rcd.UserID IS Null then 1
when rcd.UserID IS not null
and rcd.TS< usr.TimeStampID then 1
else 0 end)over(partition by UserID) as cnt
from table1 usr
left join (select UserID,Max(TimeStamp)as TS from table2 group by UserID) rcd
on usr.UserID=rcd.UserID
在这里,您可以看到TimeStamp比注册更大的每个USERID的计数。然后你可以做简单的数学运算并将记录插入注册。
Insert into regst(UserID,TimeStamp)
select UserID,TimeStampID from tableabove
where cnt= 'the number that trigger the insert to table 2'