组中每行的时差

时间:2013-01-11 18:41:14

标签: sql-server-2008 tsql

我的表格如下:

    GroupOrderID    Station           Date
-----------------------------------------------
    28797   NB003   2013-01-03 12:53:00
    28797   NB003   2013-01-03 17:12:00
    28797   NB003   2013-01-04 14:45:00
    28797   NB003   2013-01-04 15:57:00
    28797   NB003   2013-01-06 16:08:00
    28797   NB003   2013-01-07 10:28:00
    28797   NB003   2013-01-07 10:29:00
    28797   CRM220  2013-01-07 16:31:00
    28797   CRM220  2013-01-07 17:04:00
    28797   CRM220  2013-01-07 17:04:00
    28797   CRM220  2013-01-07 17:04:00
    28797   CRM220  2013-01-07 17:04:00
    28797   CRM220  2013-01-07 17:24:00
    28797   CRM220  2013-01-07 17:24:00
    28797   STEENOVE    2013-01-11 11:03:00

我希望每行的两个日期之间的时差为秒,对于每个站点,

但MAX SECONDS BREAK条件有条件。 例如,在计算Station CRM220第一个和最后一个日期时间的秒数期间,我们将不计算具有秒数的时间> MAX SECONDS BREAK。

因此,我们将计算电台的第一次和最后一次测量之间的所有秒数,并排除Max Break中提到的时间间隔秒。 与Station NB003一样,CRM220每个都有第一个和最后一个日期,我希望在几秒钟内有所不同。

1 个答案:

答案 0 :(得分:0)

这个tsql会给你第二个差异。**

with cte as
(SELECT
   ROW_NUMBER() OVER (PARTITION BY GroupOrderID    , Station ORDER BY CDate) row,
  GroupOrderID    , Station, CDate
 FROM #supportContacts)
SELECT 
   a.GroupOrderID    , a.Station ,
   DATEDIFF ( second , b.CDate , a.CDate) as 'DiffinSec'
FROM
   cte a
   LEFT  JOIN cte b
   on a.GroupOrderID = b.GroupOrderID
   and a.Station = b.Station
    and a.row = b.row+1

结果

Results