0
表DATA_CUBE的以下示例數據位於varchar(255)中。它有180萬行,沒有主鍵。我想在幾秒鐘內返回一輛自行車在車站花費的平均時間。首先,我運行了一個查詢,將結果順序返回1,4,5。從下面的快照中,我想知道的是,是否可以計算第1行的stoptime
與第2行的starttime
之間的時差(由bikeid使用SQL?如何查找SQL Server中兩個交叉列之間的時間(秒)
表DATA_CUBE的以下示例數據位於varchar(255)中。它有180萬行,沒有主鍵。我想在幾秒鐘內返回一輛自行車在車站花費的平均時間。首先,我運行了一個查詢,將結果順序返回1,4,5。從下面的快照中,我想知道的是,是否可以計算第1行的stoptime
與第2行的starttime
之間的時差(由bikeid使用SQL?如何查找SQL Server中兩個交叉列之間的時間(秒)
你真正想要的功能是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;
感謝@Gordon,但此查詢拋出錯誤8120我需要在此查詢的結尾使用組? – 2014-10-19 00:29:18
@ReeyaOberoi。 。 。不,我原本以爲你想要平均值,並且意外地離開了這個功能。 – 2014-10-19 00:31:19