Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL分组GPS行程数据_Sql Server_Sql Server 2014 - Fatal编程技术网

Sql server SQL分组GPS行程数据

Sql server SQL分组GPS行程数据,sql-server,sql-server-2014,Sql Server,Sql Server 2014,这是我的桌子 我需要创建此报告 行驶标志是汽车的状态 所以我需要真正驾驶的第一个点作为旅程的开始 最后一点作为总周期和总距离的终点 车站也一样 以及移动的最大和平均速度 该表应按id排序,以保持驾驶记录有序 多谢各位 编辑 这是我在基于速度创建驱动标志之前的最后一次尝试` 但它按全天分组,通过IMEi和驾驶,即以10公里的距离移动30分钟,得到总计,停止30分钟get Period LastDate StartDate and get Total Distance我在主帖子中添加了我的上一个查

这是我的桌子

我需要创建此报告

行驶标志是汽车的状态 所以我需要真正驾驶的第一个点作为旅程的开始 最后一点作为总周期和总距离的终点

车站也一样 以及移动的最大和平均速度 该表应按id排序,以保持驾驶记录有序 多谢各位

编辑

这是我在基于速度创建驱动标志之前的最后一次尝试`
但它按全天分组,通过IMEi和驾驶,即以10公里的距离移动30分钟,得到总计

,停止30分钟get Period LastDate StartDate and get Total Distance我在主帖子中添加了我的上一个查询I可能是错误的,但在示例数据中,随着Id的增加,例如IMEI 860990002931419的TrackTime和CurrTime会倒退。这是预期的吗?这是样本数据真实数据是正确的,即id=100,时间10:00,id=101,时间=10:02,id=102,时间=10:03当将数据复制到Fiddle时会发生这种情况,如果您能纠正IMEi和驾驶会非常欣赏的样本数据,即以10 KM的距离移动30分钟,停止30分钟get Period LastDate StartDate and get Total Distance我在主帖子中添加了我的上一个查询I可能是错误的,但在示例数据中,随着Id的增加,例如IMEI 860990002931419的TrackTime和CurrTime会倒退。这是预期的吗?这是样本数据真实数据是正确的,即id=100,时间10:00,id=101,时间=10:02,id=102,时间=10:03当将数据复制到Fiddle时会发生这种情况,如果您愿意更正样本数据,我们将不胜感激
    SELECT        
    carid
    , (SUM(CASE WHEN speed < 3 THEN 0 ELSE DATEDIFF(minute, b.trackold, b.TrackTime) END)) AS speeding
    , (SUM(CASE WHEN speed >= 3 THEN 0 ELSE DATEDIFF(minute, b.trackold, b.TrackTime) END)) AS parked
    , round(sum(Distance / 1000), 2) AS Distance
    , TrackDay 
FROM            
(
    SELECT        
        carid
        , TrackDay
        , TrackTime
        , trackold
        , speed
        , TrackDayOld
        , diff
        , Distance  
    FROM            
    (
        SELECT        
            carid
            , TrackTime
            , LAG(TrackTime, 1, NULL) OVER (PARTITION BY carid ORDER BY TrackTime) AS trackold
            , CONVERT(date, TrackTime) AS TrackDay
            , CONVERT(date, LAG(TrackTime, 1, NULL) OVER (PARTITION BY carid  ORDER BY TrackTime)) AS TrackDayOld
            , speed
            , datediff(minute, LAG(TrackTime, 1, NULL) OVER (PARTITION BY carid ORDER BY carid), TrackTime) AS diff
            , Distance 
        FROM T_Tracking
    ) a 
    WHERE a.TrackDay = a.TrackDayOld
) b GROUP BY carid
    , TrackDay