2016-06-30 1 views
0

У меня есть запрос, который объединяет и условие условия. И я получаю ошибку множественного идентификатора на «ELSE TP1.ValidSupervisorID». Ниже приведен запрос.ошибка множественного идентификатора с соединениями и футлярами

SELECT 
    distinct TP.PeopleKey, 
    TP1.ValidSupervisorID 
FROM tbl_People TP 

LEFT JOIN ( select tbl_People.PeopleKey, 
    CASE 
     WHEN tbl_People.SupervisorID in (select PersonnelNbr from tbl_People) THEN tbl_People.SupervisorID 
     ELSE '' 
    END ValidSupervisorID 
    FROM tbl_People 
    ) as TP1 on TP.PeopleKey = TP1.PeopleKey 

LEFT JOIN ( select tbl_People.PeopleKey, 
    CASE 
    WHEN tbl_People.CareerCounselorID in (select PersonnelNbr from tbl_People) THEN tbl_People.CareerCounselorID 
    WHEN tbl_People.CareerCounselorID=NULL OR tbl_People.CareerCounselorID='' THEN tbl_People.CareerCounselorID 
    ELSE TP1.ValidSupervisorID 
    END ValidCareerCounselorID 
    FROM tbl_People 
    ) as TP2 on TP1.PeopleKey = TP2.PeopleKey 

Может ли кто-нибудь помочь?

+0

'tbl_People.CareerCounselorID = NULL' не будет работать ни. –

ответ

1

Вы не можете ссылаться на TP1 во втором подзапросе; потому что до тех пор, пока он не завершит операцию соединения, он не знает, к какой строке TP1 он подключен.

Простейшим решением было бы вернуть null и поместить оператор case во внешний запрос.

Если честно, я не понимаю, для чего нужен TP2? Насколько я могу судить по результатам запроса.

0

Вы не можете получить доступ к TP1 внутри LEFT JOIN, используйте вместо этого OUTER APPLY.

Смежные вопросы