SQL上的GROUP BY和JOIN出现问题
我有两个表,一个有员工姓名和员工代码,另一个有相同的员工代码,但有员工的到达和离开时间。后一个表中的一列包含一个varchar,说明他们是晚到还是早到,该表显示了3天和6名员工的值。 我需要使用join来显示第一个表中的名字和姓氏以及第二个表中的每一列,并且不显示迟到一次或多次的员工。 我现在遇到的错误代码是:SQL上的GROUP BY和JOIN出现问题,sql,join,subquery,Sql,Join,Subquery,我有两个表,一个有员工姓名和员工代码,另一个有相同的员工代码,但有员工的到达和离开时间。后一个表中的一列包含一个varchar,说明他们是晚到还是早到,该表显示了3天和6名员工的值。 我需要使用join来显示第一个表中的名字和姓氏以及第二个表中的每一列,并且不显示迟到一次或多次的员工。 我现在遇到的错误代码是: SELECT EmpRegister.LastName, EmpRegister.FirstName, TimeSheet.* FROM EmpRegis
SELECT
EmpRegister.LastName,
EmpRegister.FirstName,
TimeSheet.*
FROM EmpRegister
INNER JOIN TimeSheet ON EmpRegister.ID=TimeSheet.EmpID
WHERE Flag <> 'Late'
GROUP BY Emp.ID
选择
EmpRegister.LastName,
EmpRegister.FirstName,
时间表。*
从EMP注册
EmpRegister.ID=TimeSheet.EmpID上的内部联接时间表
“迟到”标志在哪里
按Emp.ID分组
我没有时间编写一组测试数据,但请尝试以下方法:
SELECT DISTINCT
EmpRegister.LastName,
EmpRegister.FirstName,
TimeSheet.*
FROM EmpRegister
INNER JOIN TimeSheet
ON EmpRegister.ID=TimeSheet.EmpID
WHERE NOT EXISTS (
SELECT 1
FROM TimeSheet
WHERE EmpRegister.ID = TimeSheet.EmpID
AND Flag = 'Late'
)
您能提供您拥有的样本数据和预期输出吗?如果要显示给定员工的所有时间表条目,您不能按分组。使用
WHERE标志'Late'
无效,因为它应用于每一行,而不是客户端的所有行。也许您试图通过分组方式来克服这一问题,但这不是解决问题的方法。请尝试不存在的地方()