Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法绑定加入时选择错误_Sql_Sql Server_Select_Outer Join - Fatal编程技术网

Sql 无法绑定加入时选择错误

Sql 无法绑定加入时选择错误,sql,sql-server,select,outer-join,Sql,Sql Server,Select,Outer Join,我正在实现这个功能: DECLARE @Type AS VARCHAR(20) SET @Type='Student' SELECT Users.NTID, @Type FROM Users LEFT OUTER JOIN Courses ON Users.NTID=Courses.Faculty GROUP BY Users.NTID IF (Users.NTID=Courses.Faculty) B

我正在实现这个功能:

DECLARE @Type AS VARCHAR(20)
SET @Type='Student'
SELECT Users.NTID, @Type
    FROM Users
        LEFT OUTER JOIN Courses
        ON Users.NTID=Courses.Faculty

        GROUP BY Users.NTID

        IF (Users.NTID=Courses.Faculty) 
        BEGIN
         SET @Type='Faculty'
        END
这就是我得到的错误

Msg 4104, Level 16, State 1, Line 10
The multi-part identifier "Users.NTID" could not be bound.
Msg 4104, Level 16, State 1, Line 10
The multi-part identifier "Courses.Faculty" could not be bound.
如果我不添加这个,它会将所有行显示为学生

IF (Users.NTID=Courses.Faculty) 
            BEGIN
             SET @Type='Faculty'
            END

错误来自尝试在查询外部的代码中使用查询中的值。
if
语句不是查询的一部分

我相信您想要的是这样的,获取用户,其中Courses表中有匹配记录,而用户没有匹配记录:

select
  Users.NTID, 'Student'
from
  Users
  left join Courses on Users.NTID = Courses.Faculty
where
  Courses.Faculty is null

union all

select
  Users.NTID, 'Faculty'
from
  Users
  inner join Courses on Users.NTID = Courses.Faculty
group by
  Users.NTID

我不确定,如果我理解你想要实现的目标。由于您的if语句超出了Users.NTID和Courses.Faculty字段的范围,所以您都会出现此错误

如果要将Users表上的记录标记为Students/Faculty,可以尝试此查询。它只是在select中获取if语句

选择DISTINCT Users.NTID,CASE WHEN Courses.Faculty为空,然后选择'Faculty'或'Student'以PersonType结尾 来自用户 左外连接用户上的课程。NTID=Courses.Faculty