Вопрос: Аналитическая задача источника и цели назначения SQL - PullRequest
0 голосов
/ 25 апреля 2020

Sql таблица состоит из трех столбцов Cust_id, исходного и целевого назначения. как

Cust_id      Source Destination      Target destination
1               Delhi                  Noida
1               Gurgaon                Agra 
1               Agra                   Gurugram

Точно так же есть несколько идентификаторов. Мы должны получить 2 записи в общей сложности. Одна с человеком прошла только из исходного пункта назначения в целевой пункт назначения и без возврата. Другая запись будет той из двух записей, когда клиент прошел путь от исходного пункта назначения до целевого пункта назначения и вернулся от цели к источнику.

Ожидаемый результат:

Cust_id      Source Destination      Target destination
1               Delhi                  Noida
1               Gurgaon                Agra 

Может ли кто-нибудь опубликовать оптимизированное решение?

1 Ответ

0 голосов
/ 25 апреля 2020

Хммм. , , Это сложно. Самостоятельное присоединение принесет дополнительную цель. Но вы также хотите отфильтровать данные. Один из методов:

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
                 );

Здесь - это дб <> скрипка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...