Sql 在基于关闭时间的唯一条件下插入到具有多个联接的表中

Sql 在基于关闭时间的唯一条件下插入到具有多个联接的表中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个包含多个连接的插入语句。但是,最后一个联接表ItemMulitplers实际上没有任何东西与其他表相关联。他们只是这个表中的乘数,没有唯一的标识或与其他人的联系。唯一的问题是这个表中的时间戳 我在这个表中有5行,我的脚本占用了所有5行。我需要它只选择一个,并根据名为ItemsProduced的表中最近的时间进行计算。它们在同一时间执行,但不是在同一毫秒级别上执行。非常感谢您的帮助,谢谢 insert into KLNUser.dbo.ItemLookup (ItemNumber, Ca

我有一个包含多个连接的插入语句。但是,最后一个联接表ItemMulitplers实际上没有任何东西与其他表相关联。他们只是这个表中的乘数,没有唯一的标识或与其他人的联系。唯一的问题是这个表中的时间戳

我在这个表中有5行,我的脚本占用了所有5行。我需要它只选择一个,并根据名为ItemsProduced的表中最近的时间进行计算。它们在同一时间执行,但不是在同一毫秒级别上执行。非常感谢您的帮助,谢谢

insert into KLNUser.dbo.ItemLookup  (ItemNumber, Cases, [Description], [Type], Wic, Elc,    totalelc,  Shift, [TimeStamp])


    select  a.ItemNumber, b.CaseCount,b.ItemDescription, b.DivisionCode, b.WorkCenter, b.LaborPerCase, a.CaseCount* b.LaborPerCase* c.IaCoPc, a.shift, a.TimeStamp from ItemsProduced a 

       inner join MasterItemList b on a.ItemNumber = b.itemnumber
       inner join ItemMultipliers c on c.MultiplyTimeStamp <=a.Timestamp Interval 1        seconds


    where not exists (select *  from ItemLookup where ItemNumber = a.ItemNumber and Cases = b.CaseCount and [TimeStamp] = a.TimeStamp)

我认为最简单的方法是交叉应用:

select  a.ItemNumber, b.CaseCount,b.ItemDescription, b.DivisionCode, b.WorkCenter, b.LaborPerCase, a.CaseCount* b.LaborPerCase* c.IaCoPc, a.shift, a.TimeStamp
from ItemsProduced a inner join
     MasterItemList b
     on a.ItemNumber = b.itemnumber cross apply
     (select top 1 *
      from ItemMultipliers c
      where c.MultiplyTimeStamp < a.Timestamp
      order by c.MultiplyTimeStamp desc
     ) c
where not exists (select *  from ItemLookup where ItemNumber = a.ItemNumber and Cases = b.CaseCount and [TimeStamp] = a.TimeStamp)