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