我正在努力思考子查询,在大多数情况下,我在不同的上下文中都取得了成功。然而,这一次却让我不知所措。
我有一个时间表表,里面有两个工资期的正常工作时间和加班时间。它与我的员工表共享一个员工ID密钥。
我想检查的是谁在两个工资期之间总共工作了80个小时,然后显示他们的姓名+工资率。
下面的代码是错误的,但我为使其工作所做的任何更改都会导致错误。
SELECT Employee.Lastname, Job.Payrate * 1.05 "Increased"
FROM Employee JOIN Job
ON Employee.Jobcode = Job.Jobcode
WHERE EmpID IN (SELECT SUM(Reghours + Otimehours) FROM Timesheet GROUP BY EmpID);
有人能告诉我哪里出了问题吗?如果需要更多的上下文,请告诉我。
这是针对我之前的问题,在这个问题中,我只希望在一个工资期内工作超过40小时。我试着编辑这个来让它发挥作用,但我觉得我忽略了一些简单的东西。
SELECT Employee.Lastname, ROUND(Job.Payrate * 1.05, 2) "Increased"
FROM Employee JOIN Job
ON Employee.Jobcode = Job.Jobcode
WHERE EmpID IN (SELECT EmpID FROM Timesheet WHERE Payweekenddate = '30-MAY-03' AND Reghours + Otimehours > 40);
您在子查询-中缺少检查EMPID
SELECT Employee.Lastname, Job.Payrate * 1.05 "Increased"
FROM Employee JOIN Job
ON Employee.Jobcode = Job.Jobcode
WHERE EmpID IN (SELECT EmpID
FROM Timesheet
GROUP BY EmpID
HAVING SUM(Reghours + Otimehours) >= 80 );