Amazon Redshift - присоединение к таблице и поиск несопоставленных строк - PullRequest
0 голосов
/ 14 мая 2018

У меня есть две таблицы, псевдоструктура которых будет выглядеть следующим образом:

User_master

user   pfid
------------
reno    2
andrew  3
reno    4
rosh    5
rosh    8
john    7

HR_master

user    pfid
-------------
andrew   3
reno     4
rosh     9
john     12

Roaster_master

user    pfid
--------------
andrew   3
reno     4
rosh     10
john     12

Мне нужно объединить все 3 таблицы в столбце user и найти строки в HR_master, где pfid не совпадает с любой эквивалентной записью в User_master. Если вы заметили одну из записей для «Рено» совпадений, в то время как ни одна из записей для «Рош» не соответствует.

Это было бы несложной задачей, если бы в User_master была только одна запись, осложнение возникает из-за нескольких строк.

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

USM.user   USM.pfid   HRM.pfid   RM.pfid
-----------------------------------------
  rosh       5|8        9           10
  john        7         12          12

Как и просили, вот запрос, который я скомпилировал:

select
  UM.email,UM.pfid as UMpfid,
  HRM.pfid, RM.pfid
from user_master UM
left join HR_master HRM on (HRM.email=UM.email)
left join Roaster_master RM on (RM.email=UM.email)
where UM.pfid != HRM.pfid

Приведенный выше запрос также возвращает "reno", тогда как он не должен появляться, поскольку одна из строк в User_master имеет pfid-соответствие.

...