问题:源和目标目标分析问题SQL

问题描述 投票:0回答:1

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 

任何人都可以发布优化的解决方案吗?

sql plsqldeveloper
1个回答
0
投票

嗯。 。 。这很棘手。自加入会带来其他目标。但是您也想过滤数据。一种方法是:

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 <>小提琴。

© www.soinside.com 2019 - 2024. All rights reserved.