GPS跟踪的Sql查询

GPS跟踪的Sql查询,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,这是我的数据表 它是跟踪汽车表i的东西,列名是描述性的 我每30秒得到一次车长 现在我想要一份报告来获取详细信息 这是我最后一次尝试 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.

这是我的数据表

它是跟踪汽车表i的东西,列名是描述性的 我每30秒得到一次车长 现在我想要一份报告来获取详细信息

这是我最后一次尝试

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
但是这辆车每天都有记录


谢谢

这是我如何解决问题的 我将把它标记为任何一个寻找同样情况的人的答案

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

在示例数据中,距离列是否意味着为空?不,您可以尝试,因为它有浮点值。这是旧数据,您希望在这里输出什么?对于您问题中的数据,正确的结果是什么?图片中显示了报告我的查询每天返回每辆车的一行,其中所需的应获得当天的详细信息,即从下午1:00到下午1:30驾驶,然后从1:30到2:30停车,如果车辆行驶一段时间,然后停车一段时间,该怎么办,然后开了一段时间,然后又停了下来?你打算如何在一排上展示这一点?