Sql server 如何修复不在两个字段中的错误?

Sql server 如何修复不在两个字段中的错误?,sql-server,Sql Server,NOT in中的select语句不能包含两个字段 这里似乎也有语法错误: SELECT Tbl_EmpAttendance.Emp_No,Att_Date, Att_Kind, Decription, a_name, Job_Name, DepName, SecName, BranchName, DegName, S_Time, E_Time,S_Time1, E_Time1,Notes, case when Att_Kind =3 or At

NOT in中的select语句不能包含两个字段

这里似乎也有语法错误:

SELECT   Tbl_EmpAttendance.Emp_No,Att_Date, Att_Kind, Decription, a_name, Job_Name,
            DepName, SecName, BranchName, DegName, S_Time, E_Time,S_Time1, E_Time1,Notes,
            case when Att_Kind =3 or Att_Kind = 4 or Att_Kind = 5 then (case when (datediff(minute,Convert(varchar(8),Work_E_Time,8) ,convert(varchar(8),isnull(E_Time,Work_E_Time),8)) < 0) then (datediff(minute,Convert(varchar(8),Work_E_Time,8),convert(varchar(8),isnull(E_Time,Work_E_Time),8))) * -1 else 0 end ) else 0 end  Early_Time,
            case when Att_Kind = 2 or Att_Kind = 6 or Att_Kind = 4 then (case when (datediff(minute,Convert(varchar(8),Work_S_Time,8),convert(varchar(8),isnull(S_Time,Work_S_Time),8)) > 0) then (datediff(minute,Convert(varchar(8),Work_S_Time,8),convert(varchar(8),isnull(S_Time,Work_S_Time),8))) else 0 end) else 0 end   Late_Time
into #t1
            FROM Tbl_EmpAttendance INNER JOIN
                      TblCalendar_WorkingHours ON Tbl_EmpAttendance.Att_Date = TblCalendar_WorkingHours.Calendar_Date
                      INNER JOIN dbo.tblEmp_Situation ON tblEmp_Situation.Emp_No=Tbl_EmpAttendance.Emp_No
                    AND  tblEmp_Situation.Attendance_Code = TblCalendar_WorkingHours.AttendanceType_Code
                    AND tblEmp_Situation.Trans_Date = (SELECT MAX(S.Trans_Date) FROM tblEmp_Situation S WHERE S.Emp_No =tblEmp_Situation.Emp_No )   Where (att_kind =2 or att_kind =4 or att_kind =6)  Or (att_kind =3 or att_kind =4 or att_kind =5)  Or (att_kind =5 or att_kind =7 or att_kind =12)  Or (att_kind =6 or att_kind =8 or att_kind =11)  Or (att_kind =10)  And WorkingType_Code = 1   ORDER BY Emp_No asc ,Att_Date desc


--********************* Start Of Error *****************************************
select * from #t1 where emp_no AND Att_Date  not in( select emp_no ,AttDate from AttendanceNotices)
--********************* End  ***************************************************



drop table #t1
第二个是不必要的,它应该是或,取决于您的逻辑,您不能在选择a、b…中执行x,IN value列表必须包含1列

您不能在选择a、b。。。因为IN值列表必须仍然包含1列

相反,您将为IN和NOT EXISTS for NOT IN执行联接:


描述是一团糟!无法阅读。。。请格式化你的代码…你不能在a,b中做x,这是不可能的。子查询必须返回1列且仅返回1列。要解决这个问题,请改为加入。伙计,我本来想编辑这个,但不知道从哪里开始。这个问题似乎离题了,因为它只是一堆不可读的SQL
AND tblEmp_Situation.Trans_Date = (SELECT MAX(S.Trans_Date) FROM tblEmp_Situation S WHERE S.Emp_No =tblEmp_Situation.Emp_No )   Where (att_kind =2 or att_kind =4 or att_kind =6)
select
    *
from
    #t1
where
    not exists (
        select
            *
        from
            AttendanceNotices as AN
        where
            #t1.emp_no = AN.emp_no
        and #t1.Att_Date = AN.AttDate
    )