我有以下疑问…
SELECT Flights.flightno,
Flights.timestamp,
Flights.route
FROM Flights
WHERE Flights.adshex = '400662'
ORDER BY Flights.timestamp DESC
返回以下屏幕截图。
但是,我不能使用简单的分组方式,例如bcs6515将在稍后的列表中出现,我只想“压缩”列表中彼此相邻的相同行。
输出的一个示例(请在此列表中两次注意bcs6515,因为它们在第一个查询中不相邻)
这就是为什么一个飞行小组不能工作。
最佳答案
我认为在没有列帮助您的情况下,在sql中没有一个好的方法可以做到这一点。充其量,我认为它将需要一个子查询,这将是丑陋和低效的。你有两个选择,可能最终会有更好的表现。
一种方法是自己编写逻辑代码来删减结果。(添加:)如果要在数据库服务器端处理它,可以使用select语句的procedure clause来完成。
另一种方法是使用表中的其他信息,或者为此目的向表中添加新信息。您的表中当前是否有一些值对于许多BCS6515行的每个实例都是不同的?
如果没有,并且我对您表中的数据做出了正确的假设,那么每天将只有一个航班具有相同的航班号,尽管航班号被重用来表示具有相同的开始/结束时间和其他日期的航班。(例如,从NRT到DTW的上午10点是每天相同的航班号)。如果timestamp
s始终是同一天,则可以在DAY(timestamp)
中使用GROUP BY
。但是,这不允许通宵飞行。因此,您可能需要一些东西,如出发日期来分组,以将所有行标识为属于同一物理航班。