2016-03-04 42 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