2016-10-12 21 views
0

私はMicrosoft SQL Server Management Systemを使用しています。 私は、この表ここに持っている:SQL:開始日と終了日を計算する(終了から終了まで)

enter image description here

そして、私は次の行から(マイナス)を計算したいと思い、以前の「終了」と「開始」。マークされた写真のように。

2016-01-07 02:24:37.357 - 2016-01-07 02:24:25.170 = 0,000138889 


started     ended 
2016-01-04 22:40:35.930 2016-01-05 02:01:36.500 
2016-01-06 23:32:27.163 2016-01-07 02:24:25.170 
2016-01-07 02:24:37.357 2016-01-07 02:57:04.010 
2016-01-07 03:03:12.300 2016-01-07 22:41:55.473 
2016-01-07 22:42:05.043 2016-01-07 22:55:07.947 
2016-01-07 22:55:16.570 2016-01-08 00:23:08.263 
2016-01-08 00:34:35.297 2016-01-08 05:32:54.967 
+1

どのdbmsを使用していますか?列データ型? – jarlh

+1

あなたはどのDBMSを使用していますか?また:http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

+0

もどうぞ画像の代わりにサンプルデータを貼り付けるのに時間がかかる – TheGameiswar

答えて

2

lagを使用すると、前の行の終了列を取得し、それを減算に使用できます。

select *, 
datediff(second,lag(ended) over(partition by status order by started),started) as diff_column 
from tablename 
0

は、SQL Server 2012以降を使用している場合は、このいずれかのためにあなたがそうでなければ、カーソルの周りにこのロジックを組み込む必要があります、LEADおよびLAG関数を使用することができます。

0
select DATEDIFF(lag(ended),lead(started)) from tablename 
関連する問題