我有一个机票桌,我需要帮助,以确定机票号码是单程还是往返,如图片所示。
以下是我需要满足的规范:
实际上,我有一个来自两个表的JOIN语句(重复的航班表),但是我不知道在哪里包含上一个/下一个目的地。
TicketNumber Coupon Origin Destination Value
1000 1 USA JPN One-way
1001 1 JPN USA One-way
1002 1 CAN USA Roundtrip
1002 2 USA CAN Roundtrip
1002 3 CAN BAH One-way
1002 4 BAH USA One-way
1003 1 BRA COL One-way
1003 2 COL MEX Roundtrip
1003 3 MEX COL Roundtrip
1004 1 KOR IND One-way
1005 1 KOR JPN One-way
1005 2 JPN USA One-way
1005 3 USA KOR One-way
1006 1 IND GBR Roundtrip
1006 2 GBR IND Roundtrip
1007 1 CHN JPN One-way
1008 1 SWE DEN Roundtrip
1008 2 DEN SWE Roundtrip
1009 1 MEX USA One-way
1009 2 USA CAN One-way
1010 1 FRA GBR One-way
你能帮我做这个吗?
发布于 2022-09-30 08:18:57

SQL脚本:
下面的脚本用于根据指定的逻辑查找它是单程旅行还是往返行程。
select *,
CASE
WHEN MAX(coupon) OVER (PARTITION BY ticketno)=1 then 'ONE-WAY'
WHEN dest=lead(origin,1) over (partition by ticketno order by coupon) AND origin=lead(dest,1) over (partition by ticketno order by coupon) then 'ROUND-TRIP'
WHEN origin=lag(dest,1) over (partition by ticketno order by coupon) AND dest=lag(origin,1) over (partition by ticketno order by coupon) then 'ROUND-TRIP'
ELSE 'ONE-WAY'
END AS Value
from TABLE1输出表:

发布于 2022-09-30 08:26:23
如果我正确理解你的问题,也许解决办法是这样的?
往返是那些行,对于这些行,表包含的行是相同的,但是原点和目的地翻转,优惠券要么高一点,要么低1。
UPDATE flights
SET value = 'Roundtrip'
WHERE
(ticketnumber, coupon, origin, destination) IN (
SELECT ticketnumber, coupon + 1, destination, origin
FROM flights UNION
SELECT ticketnumber, coupon - 1, destination, origin
FROM flights)https://stackoverflow.com/questions/73904599
复制相似问题