根据两个日期值之间的时差进行分组

时间:2016-10-05 22:30:42

标签: sql sql-server tsql reporting-services ssrs-2008

我一直在四处寻找,但却找不到其他同样的问题。

我正在使用SQL Server(2008 R2)。

假设我的查询中有以下三行数据。我需要做的是根据开始时间和结束时间(持续时间)之间的分钟差异将前两行分组为一个(在SQL Server或SSRS中)。在一行的结束时间和下一行的开始时间之间经过多长时间并不重要;我只关注持续时间。

当前结果集:

+---------+------------+------------+----------+
| Vehicle | Start Time | End Time   | Duration |
+---------+------------+------------+----------+
| 12      | 1:56:30 AM | 2:07:47 AM | 11       |
+---------+------------+------------+----------+
| 12      | 2:07:57 AM | 6:46:08 AM | 279      |
+---------+------------+------------+----------+
| 19      | 2:55:02 PM | 3:45:59 PM | 53       |
+---------+------------+------------+----------+

期望的结果集:

+---------+------------+------------+----------+
| Vehicle | Start Time | End Time   | Duration |
+---------+------------+------------+----------+
| 12      | 1:56:30 AM | 6:46:08 AM | 290      |
+---------+------------+------------+----------+
| 19      | 2:55:02 PM | 3:45:59 PM | 53       |
+---------+------------+------------+----------+

我觉得这必须是分组的问题,但我不确定如何根据开始和结束时间是否相隔不到15分钟进行分组。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

除非我误解了你的问题,否则试试这个

Select Vehicle
      ,StartTime = min(StartTime)
      .EndTime   = max(EndTime)
      ,Duration  = sum(Duration)
From YourTable
Group By Vehicle