用自己的数据更新表

时间:2013-09-23 12:40:52

标签: sql sql-server

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

0 个答案:

没有答案