Я пытаюсь обернуть голову вокруг подзапросов, и по большей части добился успеха в разных контекстах. Это, однако, поставило меня в тупик.
У меня есть таблица с расписанием, в которой указаны обычные и сверхурочные часы, отработанные в течение двух периодов оплаты. Он разделяет идентификационный ключ сотрудника с таблицей моих сотрудников.
Я пытаюсь проверить, кто проработал более 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);