2011-07-19 79 views
0

我有1個表記錄了每晚的服務器狀態信息。我使用保存在另一個表中的企業中的每個服務器的列表引用該表,並針對該表運行查詢,以檢查過去幾小時內該服務器名稱的條目是否包含在Maint表中。這部分運作良好。根據記錄條目是否存在來更新列

 
Lookup table: 
--------------- 
serverID 
serverName 
isActive 

Maintenance Table: 
-------------- 
ServerID 
ServerName 
LastAttemptedDateTimeStamp 

--This part is working fine. 

這是我想添加的功能。我想每天更新表格(覆蓋所有舊信息)併爲查找表中的每個條目記錄一條記錄。如果在最近24小時內在Maint表中存在查找表中的服務器條目,則在該行中放置SUCCESS位(1),更新LastAttemptedDateTime和LastSuccDateTimeUpdate。

如果該表中的條目不存在,然後把失敗位(0),不更新LastSuccDateTimeUpdate

 
Reporting Table: 
---------------- 
-LastAttemptedDateTime 
-LastSuccDateTimeUpdate 
-WasSuccessfull (bit) 0 or 1 

如何才能做到這一點?

+2

您嘗試過任何操作嗎? – JNK

+0

我正在查找CASE作爲IF/THEN的警告,以便SQL Server找出'WasSuccessfull'部分。 IF或CASE日期時間超過24小時,然後將成功爲0。如果日期時間不足24小時,則爲1成功。不太清楚如何去做邏輯。 – Alex

+0

無法用當前信息解決。我們缺少列(查找表中至少有一個datestamp),並且有兩個報表。描述這兩個表格,填入一些測試數據,以便我們有機會解決它。還要描述測試數據的期望輸出 –

回答

1

下面是一些僞代碼使用情況:

Update ReportingTable R 
SET Col1 = SomeValue, 
    Col2 = SomeOtherValue, 
    WasSuccesful = CASE 
        WHEN EXISTS (SELECT 1 FROM LookupTable WHERE ...) THEN 1 
        ELSE 0 
        END 

如果你完成你的表結構在OP我可以更具體上市。我假設有一種方法可以將Reporting記錄鏈接到LookupMaintenance記錄...

+0

感謝JNK,這是相關的表結構,我唯一要添加的就是在報表中包含ServerID,剩下的我可以弄清楚。 所以基本上,我們在查詢表中每個項目在報表中只有1個條目,所以我認爲'update table'語句是最好的。如果在指定的時間內維護表中不存在記錄(24小時,比如說,我已經寫了這段代碼),那麼我需要將「0」設爲成功,並保持「最後更新」日期。如果記錄確實存在,則輸入1並更新最後更新的列。 HALP! TY – Alex

相關問題