如果range有值,则将它们插入另一个范围Sql查询

时间:2013-04-29 12:17:18

标签: sql sql-update

我在MSSQL 2008中有一个包含4列readdate,tagname,value和amendvalue的表。前3个是由早上8点运行的sql作业插入的,包含的数据范围从前一天早上7点到当天早上7点按小时平均值计算。修改后的值可以由用户通过Web应用程序进行更改。

我希望能够查看前几天的数据,如果在modifiedvalue列中有值,那么第二天就会更新相同的范围。它将始终为相同的范围,即如果前24小时的标记名1的修改值已更改,则第二天将需要在该24小时的修订值列中显示相同的值。

以下是我用来选择前几天的代码

SELECT coalesce(amendedValue, value),
       readDate,
       tagName,
       amendedValue,
       value
FROM gasdata
WHERE tagname ='35FI8316'
  AND readDate 
    BETWEEN DateAdd(Hour, 7, DateAdd(DAY, DateDiff(DAY, 0, GETDATE()), -1)) 
    AND dateadd(hour, 6, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0))
ORDER BY readDate

我只是不确定如何开始,我相信它应该是这样的

如果在此期间修改值具有值,则在下一期间更新修正值。

有点复杂希望它有意义

1 个答案:

答案 0 :(得分:0)

您可以声明AmendedValue变量并将其分配给最后几天数据。

然后,如果AmendedValue等于1 or your custom value

,您只会更新表格
DECLARE @AmendedValue INT

SELECT @AmendedValue = amendedValue
FROM gasdata
Where tagname ='35FI8316' and readDate BETWEEN DATEADD(DAY, -1, GETDATE()) AND GETDATE()

IF @AmendedValue = 1
BEGIN
   -- Update the table
END