2013-10-21 32 views
1

這裏是我當前的數據:分組基於事件的發生時間的數據

Id          Province Time 
18D066A7-4FFB-462A-A203-DF468F814A43 ON   2013-09-04 16:38:06.000 
18D066A7-4FFB-462A-A203-DF468F814A43 ON   2013-09-05 07:58:08.000 
18D066A7-4FFB-462A-A203-DF468F814A43 ON   2013-09-05 10:43:07.000 
18D066A7-4FFB-462A-A203-DF468F814A43 QC   2013-09-05 10:44:07.000 
18D066A7-4FFB-462A-A203-DF468F814A43 QC   2013-09-05 10:45:07.000 
18D066A7-4FFB-462A-A203-DF468F814A43 QC   2013-09-05 11:12:07.000 
18D066A7-4FFB-462A-A203-DF468F814A43 QC   2013-09-05 11:58:08.000 
18D066A7-4FFB-462A-A203-DF468F814A43 ON   2013-09-05 12:00:08.000 

以上數據存儲在一個CTE和下面是查詢:

;With CTE 
AS 
(
Select S.Id, S.Province, MIN(S.LocalTimeStamp) As MinTime From Table S 
    Where [Description] = 'Test Desc' 
    Group By Id, Province, Zone 
) 

Select * From CTE 
    Order By CTE.MinTime 

預期的結果:

Id          Province Time 
18D066A7-4FFB-462A-A203-DF468F814A43 ON   2013-09-04 16:38:06.000 
18D066A7-4FFB-462A-A203-DF468F814A43 QC   2013-09-05 10:44:07.000 
18D066A7-4FFB-462A-A203-DF468F814A43 ON   2013-09-05 12:00:08.000 

的情況是:車輛開始從ON到質量控制和返回ON。

我想單獨的行開始和返回省內ON。它工作正常時時間落在不同的日期,因爲我可以按日期部分時間。但問題是三個人都在同一天。

可以這樣做嗎?

回答

0

如果比較初始日期和以下日期之間的時間差,該怎麼辦?類似這樣的:

-- First, get the initial date: 
;WITH CTE1 
AS 
(Select Id, MIN(S.LocalTimeStamp) As MinTime From Table S 
    Where [Description] = 'Test Desc' AND Province = 'ON' 
    Group By Id 

, CTE2 
AS 
(
Select S.Id, S.Province, MIN(DATEDIFF(ms, CTE1.MinTime, S.LocalTimeStamp)) As MinTime, S.LocalTimeStamp 
From Table S 
    INNER JOIN CTE1 
     ON Table.ID = CTE1.ID 
Where [Description] = 'Test Desc' 
Group By Id, Province, Zone 
) 

Select * From CTE2 
    Order By CTE.MinTime