Sql server 如何修复不在两个字段中的错误?
NOT in中的select语句不能包含两个字段 这里似乎也有语法错误: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
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
)