2014-09-12 113 views
1

比方說,我的表中有3行,其中存儲了以下數據。合併行SQL Server 2014

ROW 1: 10:00 | 10:15 | Washington 
ROW 2: 10:00 | 10:01 | New York 
ROW 3: 10:02 | 10:03 | New York 
ROW 4: 10:05 | 10:08 | New York 
ROW 5: 10:20 | 10:40 | New York 

'|'是一個列分隔符。

如何在我的表中找到此數據並將ROW 2和ROW 4合併在一起。結果應該是這樣的:

ROW 1: 10:00 | 10:08 | New York 

我想忽略第一個和最後一排,因爲那裏合併的時間跨度被覆蓋,我只想要「紐約」的城市。

喜歡的東西: 如果下次是< 5分鐘前 THEN ROW 1.End_Time = ROW X.End_Time

預先感謝您

回答

0

它看起來像你想的第一個(最早開始時間)對於給定的位置以及該位置的下一行的結束時間,其開始時間爲5分鐘或比第一次更長。一種方法:

SELECT TOP(1) 
     a.StartTime 
    , b.EndTime 
    , a.Location 
FROM dbo.Table1 AS a 
CROSS APPLY(
    SELECT TOP(1) EndTime 
    FROM dbo.Table1 AS b 
    WHERE 
     b.Location = a.Location 
     AND b.StartTime >= DATEADD(minute, 5, a.StartTime) 
    ) AS b 
WHERE 
    a.Location = 'New York' 
ORDER BY 
    a.StartTime; 
+0

感謝您的回覆。我真的很想在一段時間內。所以我們說5分鐘。所以不是真的MAX和MIN我猜。 – user3208216 2014-09-12 10:07:24