我有以下代码。使用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)))
基本上我有一个包含多个列的表,一个是日期(readdate),一个是修改值,最后一个是引用号。每天插入350行sql作业。因此,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)