2016-03-04 70 views
0

我使用的是SQL Server 2008中,有一個表審覈所有更改到另一個表並有這樣的例如:檢索的天數的量的領域,仍處於價值

Old Value New Value Time 
Not Found Open   2014-02-10 14:11:09.000 
Open   Fixed  2014-03-06 05:35:04.000 
Fixed  Open   2014-03-27 11:44:40.000 
Open   Fixed  2014-04-10 10:00:54.000 

我想要計算它在「打開」中的時間量,請注意,這只是一個示例,真正的表格將在介於兩者之間的行之間。

比如我想是這樣的:

Record Id Time Open (days)   
1   2   
2   7   
3   5 
...   ...   
+2

請用你正在使用的數據庫標記你的問題。另外,在問題中提供所需的結果。 –

+0

一些表格定義和樣本數據如何相互匹配? 「表格」中沒有「記錄標識」。用你的表格和樣本數據創建一個sql小提琴(http://sqlfiddle.com)。然後解釋你對輸出的期望。 –

回答

0

因爲你不必爲每個打開的項目的一個關鍵,它需要的時間一點點操作,讓你在問什麼。

嘗試此操作,它將提供「打開」插入和「打開」項目後面的第一個「固定」插入之間的天數。

Select RecordId,DateDiff(Day,StartTime,EndTime) as TimeOpen 
From 
(
    Select Rank() OVER (ORDER BY UpdateTime) RecordId, 
     UpdateTime as StartTime, 
     (Select MIN(T2.UpdateTime) from MyTable T2 where T2.UpdateTime > T1.UpdateTime and T2.New_Value = 'Fixed') EndTime 
    from MyTable T1 
    where New_Value = 'Open' 
) A