0

我有以下代码。使用 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)
4

0 回答 0