2014-09-23 75 views
0

我在表格中存儲了以下數據。

將記錄結合在一起

 
DateCreated    ServerName Heading
2014-09-23 13:43:31.477 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 13:30:23.017 LAB1\TEST SQL Server running
2014-09-23 13:26:21.110 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 13:20:42.243 LAB1\TEST SQL Server running
2014-09-23 13:16:30.457 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 13:15:03.993 LAB1\TEST SQL Server running
2014-09-23 13:08:36.763 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 13:05:59.490 LAB1\TEST SQL Server running
2014-09-23 12:59:30.017 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 12:55:49.303 LAB1\TEST SQL Server running
2014-09-23 09:54:43.180 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 09:52:05.453 LAB1\TEST SQL Server running
2014-09-23 09:46:55.013 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 09:44:54.957 LAB1\TEST SQL Server running
2014-09-23 09:11:24.100 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 09:06:55.703 LAB1\TEST SQL Server running
2014-09-23 08:59:53.773 LAB1\TEST SQL Server status: Unable To Connect
2014-09-23 07:55:35.537 LAB1\TEST SQL Server running
2014-09-23 07:49:50.830 LAB1\TEST SQL Server status: Unable To Connect


我需要給關聯的所有的「無法連接」的記載與適當的「SQL Server中運行」的記錄,並計算出每一個之間的持續時間。

需要考慮到可能沒有「SQL Server運行」記錄,如上例中「2014-09-23 13:43:31.477」這意味着它仍然關閉。

有沒有人有任何建議,我怎麼可以接近這個?

+0

選擇'無法連接'左加入'running'並獲得DateNow的DateDiff與IsNull的2個DateCreated列dateCreated會,GETDATE())。 – bummi 2014-09-23 05:41:06

+0

這個問題是在哪裏接近你[Sql查詢創建計算字段](http://stackoverflow.com/questions/25915156/sql-query-to-create-a-calculated-field),不是重複的,因爲它是訪問和SQLServer,你也可以找到一個CTE解決方案。 – bummi 2014-09-23 07:52:15

回答

0

選擇所有連接失敗記錄。對於每個顯示下一個(即最晚的)連接時間。

select 
    datecreated, 
    servername, 
    (
    select min(running.datecreated) 
    from mytable running 
    where running.heading = 'SQL Server running' 
    and running.servername = notrunning.servername 
    and running.datecreated > notrunning.datecreated 
) as connected 
from mytable notrunning 
where heading = 'SQL Server status: Unable To Connect'; 

基於此,您可以計算持續時間。請注意,對於一個連接,您可能會嘗試多次失敗。您可能會考慮僅顯示每個連接的首次失敗並忽略其他連接。儘管如此,這需要更復雜的查詢。 (或者你的表只存儲第一次失敗,那麼你已經得到了所需的東西)

+0

謝謝你,那很完美。 :)是的,你對你的陳述是正確的。我只是找回第一個無法連接記錄並將其作爲起點。做到這一點很容易,因爲它只是一個「狀態」。 – Philip 2014-09-23 07:52:05