连接和案例的多部分标识符错误

时间:2016-06-30 12:28:52

标签: sql sql-server

我有以下查询加入和案例条件。我在“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 

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您无法在第二个子查询中引用TP1;因为在完成连接操作之前,它不知道它加入了哪一行TP1。

最简单的解决方案是返回null,并将case语句放在外部查询中。

说实话,我不知道TP2实际上是为了什么?据我所知,它对查询的结果没有影响。

答案 1 :(得分:0)

您无法在LEFT JOIN内访问TP1,而是使用OUTER APPLY