我有以下代码。使用 MS sql 2008
use gasnominations;
update dbo.TestData
set amendedValue =
(select amendedvalue
from gasdata
where readDate between DateAdd(Hour, 7, DateAdd(Day, DateDiff(Day, 0, GETDATE()), -2))
and dateadd(hour, 6, DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)))
基本上我有一个包含几列的表,一列是日期(读取日期),一列是修正值,最后一列是参考号。每天使用 sql 作业插入 350 行。所以 readdate 是带小时的日期,每个参考号有 24 条记录(每小时一条)。数据从昨天早上 6 点插入到今天早上 6 点。
我想在工作中创建另一个步骤,从前一天获取修改后的值(所以对于今天是星期一,它将获得每个小时的修改值和从周六早上 6 点到周日早上 6 点的参考编号)并更新修改后的值今天(即周日早上 6 点到周一早上 6 点)
希望这是有道理的。
更新
我现在得到了以下内容,但它添加了自 2012 年 11 月以来每天的表中的每一行。它确实添加了修改后的值。
INSERT INTO dbo.testdata (readDate,TagName,Value, amendedValue)
select a.readDate, a.TagName, a.Value, b.amendedValue
from gasdata a inner join gasdata b on b.TagName = a.tagName COLLATE DATABASE_DEFAULT
and a.readDate = DATEADD(DAY, 1, b.readDate)