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 から始動し、QC に進み、ON に戻ります。

ONの州内で、開始と戻りに別の行が必要です。TIMEの Date 部分でグループ化できるため、 TIMEが異なる日付になると正常に機能します。しかし問題は、3 つすべてが同じ日にある場合です。

それはできますか?

4

1 に答える 1

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
于 2013-10-25T23:59:13.367 に答える