我在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
我只是不确定如何开始,我相信它应该是这样的
如果在此期间修改值具有值,则在下一期间更新修正值。
有点复杂希望它有意义
答案 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