我有以下查询加入和案例条件。我在“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 :(得分:1)
您无法在第二个子查询中引用TP1;因为在完成连接操作之前,它不知道它加入了哪一行TP1。
最简单的解决方案是返回null,并将case语句放在外部查询中。
说实话,我不知道TP2实际上是为了什么?据我所知,它对查询的结果没有影响。
答案 1 :(得分:0)
您无法在LEFT JOIN内访问TP1,而是使用OUTER APPLY。