比较日期然后插入数据

时间:2016-01-08 06:16:36

标签: sql sql-server entity-framework linq

我有一张这样的表:

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之后必须在第二张表格中插入,之后必须从头开始计算。

我该怎么做?

2 个答案:

答案 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'