2013-04-29 26 views
1

我有一個MSSQL 2008中有4列readdate,標記名,值和修改值的表。前3個插入由上午8點運行的SQL作業,幷包含數據範圍從前一天的上午7點到當天上午7點的小時平均值。修改後的值可以由用戶通過Web應用程序進行更改。如果範圍有值,然後將它們插入到另一個範圍SQL查詢

我希望能夠查看前幾天的數據,並且修改值欄中是否有值,然後在第二天更新相同的範圍。它始終保持相同的範圍,即如果前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 

我只是不知道如何開始的代碼,我相信它應該是這樣的

如果amendedvalue有中值這個時間段然後更新下一個時間段的修改值。

有點複雜,希望這是有道理的

回答

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 
+0

會,只是尋找的值爲1,你只會更新表? – Silentbob 2013-04-29 12:21:40

+0

@ user2050577 - 是的,但您可以將其更改爲您需要的任何值。 – 2013-04-29 12:24:00

+0

我將不得不將它設置爲null – Silentbob 2013-04-29 12:26:07