У меня есть две таблицы с одинаковой схемой, и они относятся к людям, работающим в разных местах в разные годы:
- Таблица Work2018 (personID, locationID) и
- Таблица Работа2019 (personID, locationID)
Я хотел бы узнать, как я могу проверить, если человексменил место работы с одного года на другой.
Проблема здесь в том, что один и тот же человек может работать в нескольких местах в течение года.
Например:
- person123 работает в locationA и locationB in 2018
- person123 работает в locationB и location C in 2019
Я хочу вернуть, что person123 изменилось с locationA до locationC .
Я пробовал объединение влево между двумя таблицами, где personID одинаков, но locationID отличаетсянт.
select
personID, locationID
from
Work2018 w18
left join Work2019 w19 on
w18.personID = w19.personID
and w18.locationID <> w19.locationID
Однако существуют случаи, когда порядок записей в предложении соединения влияет на вывод.
Например, когда нет изменений, но они возвращаются запросомкак разные:
- person456 работает в locationX и locationY in Work2018
- person456 работает в locationY и locationX in Work2019
В том же контексте я нехочу вернуть тех, кто работает в 2018 году, а не в 2019 году и наоборот - только тех, кто присутствует в обоих годах / таблицах.
Вот выдержка из таблицы:
Work2018
personId locationId
110062159304 35120017
110062170707 35165001
110062170707 35438480
110063060212 35438480
110067060543 35271160
110067060543 35904648
Work2019
personId locationId
110062159304 35120017
110062159304 35469713
110062170707 35438480
110063060212 35438756
110062328424 35104206
110067060543 35904648
110067060543 35271160
OUTPUT:
personID from to
110062159304 - 35469713
110063060212 35438480 35438756
Как я могу справиться с этой ситуацией?