2016-04-15 30 views
0

私は選択クエリを取得したいと考えています: NUMBER(= row_number())とActionTime(datetime)の2つのカラムがあります カラム "Result" - これは私が得る必要があります。 - 以下の番号の付いていない行を取る1SQL Server。日付範囲クエリを選択してください

    1. がせいぜい10秒で行が現在から存在する場合、その列挙、最初の行を取る:結果を取得する方法

      NUMBER   --- ActionTime  --- Result 
      1   2016-04-15 15:43:58.387    1 
      2   2016-04-15 15:44:09.413    2 
      3   2016-04-15 15:44:20.470    3 
      4   2016-04-15 15:44:26.520    3 
      5   2016-04-15 15:44:32.567    4 
      6   2016-04-15 15:44:35.600    4 
      7   2016-04-15 15:44:38.657    4 
      
      01:と例を参照してくださいステップ1

    を繰り返します

  • 答えて

    0

    新しいグループが起動してから累積和場所を見つけるためにLAG()を使用して、SQL Server 2012+でこれを行うことができます。以前のバージョンでは

    select e.number, e.actiontime, 
         sum(case when prev_at > dateadd(second, 10, actiontime) 
           then 0 else 1 
          end) over (order by actiontime) as Result 
    from (select e.*, lag(actiontime) over (order by actiontime) as prev_at 
         from example e 
        ) e; 
    

    、あなたがouter applyを使用して似たような操作を行うことができますが、パフォーマンスがあります一般的にはそれほど良いものではない。

    関連する問題