2016-05-16 5 views
-2

2つの列を結合しようとします。 OnDateTimeおよびOffDateTime。SQLは2つの列を結合し、連続した行の最大時間を選択します

OnDateTime    OffDateTime 
2016-05-16 13:47:22.987 2016-05-16 13:47:22.987 
2016-05-16 13:47:26.347 2016-05-16 13:47:26.347 
2016-05-16 13:47:27.643 2016-05-16 13:47:27.643 
2016-05-16 13:48:08.003 2016-05-17 13:48:08.003 
2016-05-16 13:48:10.410 2016-08-24 13:48:10.410 
2016-05-16 13:48:11.913 2016-08-24 13:48:11.913 
2016-05-16 13:50:09.090 2019-02-09 13:50:09.090 

この2つの列を1つに組み合わせたいとします。 DESCによって順序付けし、連続した行(1と2、2と3 ....)間の最大時間をカウントします。
ありがとうございました!

+3

結果はどのように見えるのですか? –

+0

coludは1つの値である必要があります。最も長い期間でなければなりません。 –

+0

あなたは最高のDateDiffで行を探したいですか? – Veljko89

答えて

-1

Concat +日付を差し引くと、日数に差が生じます。 24時間掛けて時間単位で値を取得するなど。

select concat(date1、date2)日付、(date1 - date2)Diff、テーブルからの差分。

最大行を取得するにはMaxを使用します。

+0

地球上の何が 'CONCAT()'が日付の違いと関係があるか... – Siyual

+0

質問に使われた単語の組み合わせは私にconcatを考えさせました。便利でない場合は削除してください。シンプル。 – MeisterAjit

+0

あなたはあまりにも文字通り質問の方法を読んでいる。 – Siyual

2

これはあなたが欲しいものですか?

Select Max(DateDiff(second, a.OffDateTime, b.OnDateTime)) 
From table a 
    join table b 
     on b.OnDateTime = 
      (Select Min(OnDateTime) 
      From table 
      where OnDateTime > a.OffDateTime) 

説明:

表の行ごとに、発見に参加するには、テーブル内の次の連続行は(b)としては、maxは()関数は、列Aの端部との間の最大間隔を発見します行の開始b

関連する問題