1

私は以下のようなテーブルを持っています:

    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

各行の2つの日付の時差を秒単位で取得したい.各ステーションごとに、

ただし、MAX SECONDS BREAK 条件には条件があります。同様に、Station CRM220 の First および Last datetime の秒の計算中に、秒が MAX SECONDS BREAK を超える時間は計算されません。

そのため、ステーションの最初と最後の測定の間のすべての秒をカウントし、Max Break に記載されている秒の時間ギャップを除外します。Station NB003 のように、CRM220 にはそれぞれ最初と最後の日付があり、秒単位の差が必要です。

4

1 に答える 1

0

この tsql は数秒で diff を提供します。**

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

結果

結果

于 2013-01-11T21:42:47.803 に答える