需要SQL Server查询以消除突出显示的行(返回飞行中的路线)

需要SQL Server查询以消除突出显示的行(返回飞行中的路线),sql,sql-server,google-bigquery,Sql,Sql Server,Google Bigquery,我有一个要求,我需要消除所有有返回航线的行 我用橙色突出显示了描述这种行为的路线 例如,第1行有一个路由BKI-MYY,第4行有一个路由MYY-BKI。我需要一个标志布尔值1/0来检查整行,看它是否是返航航班 注意:有一些情况下,航班在今天晚上10:00开始,第二天清晨返回。如果是连续的一天,那么我们也需要消除这些行 有没有想过如何解决这个问题 Gsheet链接:示例数据: 定义:返程是一种双程航空旅行。如果航班从始发地出发,且在某个跃点/航线返回同一始发地始发站 标准时间=出发时间 Sta_u

我有一个要求,我需要消除所有有返回航线的行

我用橙色突出显示了描述这种行为的路线

例如,第1行有一个路由BKI-MYY,第4行有一个路由MYY-BKI。我需要一个标志布尔值1/0来检查整行,看它是否是返航航班

注意:有一些情况下,航班在今天晚上10:00开始,第二天清晨返回。如果是连续的一天,那么我们也需要消除这些行

有没有想过如何解决这个问题

Gsheet链接:示例数据:

定义:返程是一种双程航空旅行。如果航班从始发地出发,且在某个跃点/航线返回同一始发地始发站

标准时间=出发时间 Sta_utc=当日时间

这个查询一直在运行,没有给我想要的输出。
注意:我正在使用Bigquery

我已经用您提供的数据创建了一个名为S65828793的表。首先,我按起飞时间的升序对行进行编号。从这一点上,我确定了连续两天内从相反方向起飞的航班,并将其标记为返航航班。 最后,我将所有返程航班从总航班列表中排除

with AllFlight as (
select row_number()over(order by departuretime)rn, aoc  ,hub    ,flight ,departure  ,arrival    ,DepartureTime  ,ArrivalTime from S65828793  
),
returnFlight as (select * from AllFlight s
where exists (select * from AllFlight s2 where s2.rn<s.rn and s2.arrival=s.departure and s2.departure=s.arrival and datediff(day,cast(s.ArrivalTime as date),cast(s2.departuretime as date))<=1))
select aoc  ,hub    ,flight ,departure  ,arrival    ,DepartureTime  ,ArrivalTime from AllFlight where rn not in (select rn from returnFlight)
结果:

不要链接到场外资源以提供样本数据;如果您想提供示例数据,请将其作为DDL和DML语句或表格形式输入问题。还有,你有没有自己尝试过解决这个问题?它们是什么?否则,您自己进行了什么研究来解决这个问题,您读过哪些您不了解的资源呢?为了回答您的问题,我使用的是bigquery,因此标准SQL代码将适用于我的情况,因此我选择SQL server或bigquery的原因。我尝试使用Tableau格式添加表,但输出有点混乱,这可能会导致混乱。除此之外,我做了足够的研究,不是在这里,而是在另一个网站上,但我没有发现任何有用的东西,所以在这里提问。我没有添加任何代码,因为它没有给我正确的输出,而且我与我的期望相差甚远。希望这能澄清所有问题。也许你理解返回航班这个术语,但你没有提供任何匹配规则。你似乎对哪个方向定义了始发航班,哪个方向定义了返回航班也有一些想法或假设。如果不更好地理解您的模型和目标,就很难提供帮助。您仍然可以通过提供更多信息并回答所有提出的建议、问题和问题来解决此问题。它可以重新打开。但是反对票很好地表明你需要在你的问题上投入更多的精力。你的澄清和回答应该放在问题的主体中,而不是评论中。无意冒犯,但是一个高年级的学生应该能够接受批评并改进他们的问题。没有-不会像你发布的那样打开链接。这个表中有没有唯一的键列?嗨,阿里,因为我正在使用Bigquery,所以我修改了查询以满足我的需要,但它一直在运行并运行了15分钟,我不得不取消查询以避免任何费用。我没有使用大量数据,但我不确定是什么导致了问题,它可能存在,因此我正在尝试将其更改为Join。此外,我不知道如何在代码上添加注释,所以我将其与我的问题一起附上。请看一看
with AllFlight as (
select row_number()over(order by departuretime)rn, aoc  ,hub    ,flight ,departure  ,arrival    ,DepartureTime  ,ArrivalTime from S65828793  
),
returnFlight as (select * from AllFlight s
where exists (select * from AllFlight s2 where s2.rn<s.rn and s2.arrival=s.departure and s2.departure=s.arrival and datediff(day,cast(s.ArrivalTime as date),cast(s2.departuretime as date))<=1))
select aoc  ,hub    ,flight ,departure  ,arrival    ,DepartureTime  ,ArrivalTime from AllFlight where rn not in (select rn from returnFlight)