Sql表由三列Cust_id,源目的地和目标目的地组成。像
Cust_id Source Destination Target destination
1 Delhi Noida
1 Gurgaon Agra
1 Agra Gurugram
类似地,有多个ID。我们必须总共获取2条记录。一个只有一个人的人才从源目的地移到目标目的地,而没有卷土重来。另一条记录将是客户从源目的地移到目标目的地并从目标移回到源的2条记录中的一条。
预期输出:
Cust_id Source Destination Target destination
1 Delhi Noida
1 Gurgaon Agra
任何人都可以发布优化的解决方案吗?
嗯。 。 。这很棘手。自加入会带来其他目标。但是您也想过滤数据。一种方法是:
select ts.cust_id, ts.source, coalesce(tt.target, ts.target)
from t ts left join
t tt
on ts.cust_id = tt.cust_id and ts.source = tt.target
where not exists (select 1
from t tt
where tt.source = ts.target
);
Here是db <>小提琴。