2014-10-19 97 views
0

表DATA_CUBE的以下示例數據位於varchar(255)中。它有180萬行,沒有主鍵。我想在幾秒鐘內返回一輛自行車在車站花費的平均時間。首先,我運行了一個查詢,將結果順序返回1,4,5。從下面的快照中,我想知道的是,是否可以計算第1行的stoptime與第2行的starttime之間的時差(由bikeid使用SQL?如何查找SQL Server中兩個交叉列之間的時間(秒)

Sample data

回答

1

你真正想要的功能是lead(),但SQL Server 2008不支持。下面是使用outer apply的方法:

select dc.*, datediff(second, dc.stoptime, nextdc.starttime) as SecondsToNext 
from data_cube dc outer apply 
    (select top 1 dc2.* 
     from data_cube dc2 
     where dc2.bikeid = dc.bikeid and dc2.starttime >= dc.stoptime 
     order by dc2.starttime 
    ) nextdc; 
+0

感謝@Gordon,但此查詢拋出錯誤8120我需要在此查詢的結尾使用組? – 2014-10-19 00:29:18

+0

@ReeyaOberoi。 。 。不,我原本以爲你想要平均值,並且意外地離開了這個功能。 – 2014-10-19 00:31:19

相關問題