假设我的表格中有3行,其中存储了以下数据。
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分钟前 然后行1.End_Time = ROW X.End_Time
提前谢谢
答案 0 :(得分: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;