我很难完成以下任务:
我有2个SQL Server表:ImportLog和TShipping。
我的应用程序在TShipping表中插入了很多行(例如10行)
TShipping(TShipping_ID int, TShipping_CreationDate datetime)
并且(在该过程结束时,即在几毫秒之后),插入1行 进入ImportLog表
ImportLog(ImportLog_Date datetime, importlog_Nb int).
在TShipping表格中,我还有一个字段:
importlog_Nb int
我想使用importlog表的importlog_Nb值(即importlog.importlog_Nb)更新此字段(TShipping表的importlog_Nb,即TShipping.importlog_Nb)
因此难以找到,对于TShipping表中的每一行,importlog表中的行具有最接近的ImportLog_Date到TShipping_CreationDate(最接近的是> = not< =因为在TShipping表之后填充了importlog表)。
Remarque:每次进程运行时,它会在TShipping表中插入很多行,在ImportLog表中只插入1行。
如果有人可以在不使用游标的情况下给我一个简单的代码(因为TShipping表非常庞大)。
创建表TShipping(TShipping_ID int TShipping_CreationDate datetime,ImportLog_Nb int)
创建表ImportLog(ImportLog_Date datetime,ImportLog_Nb int)
答案 0 :(得分:0)
UPDATE t
set t.importlog_Nb = i.importlog_Nb
FROM TShipping t
OUTER APPLY
(
SELECT TOP 1 i.importlog_Nb, i.ImportLog_Date
FROM ImportLog i
WHERE i.ImportLog_Date >= t.TShipping_CreationDate
ORDER BY i.ImportLog_Date ASC
) i
这会在发货后拉出最近的导入日志日期并指定它