Мне нужно извлечь список адресов электронной почты из базы данных. Эти адреса электронной почты сопоставляются с идентификаторами systemID через соединение, однако адрес электронной почты (в таблице A) может соответствовать 1+ именам пользователей (в таблице B) ...

1
RC1234 15 Янв 2021 в 18:54

2 ответа

Лучший ответ

Вот ошибка: WHERE Email2 NOT IN (List_NOTNULL_systemid.email1)

Тот факт, что вы используете псевдоним List_NOTNULL_systemid, который был определен с CTE, не означает, что вы можете ссылаться на него напрямую. Вы все равно должны включить его в предложение FROM:

With......
SELECT * 
FROM List_NULL_systemid
WHERE Email2 NOT IN (select email1 from List_NOTNULL_systemid)
2
George Menoutis 15 Янв 2021 в 16:01

Вот один простой способ:

SELECT
    h.email AS Email2
    , h.[Employee First Name]
    , h.[Employee Last Name]
    , a.fullusername
    , h.[Op Company Desc]
FROM
    HR_CONTRACTORS_COMBINED     AS h
    JOIN AD_EMAIL_USERNAME_LINK AS a
        ON h.Email = a.mail
WHERE
    NOT EXISTS
    (
        SELECT
            1
        FROM
            RPT_USER_INFO AS r
        WHERE
            a.fullusername = r.fullusername
            AND  r.SystemId  IS NOT NULL 
    );
0
eshirvana 15 Янв 2021 в 16:04
65739273