Создание SQL, который создаст поля итоговой суммы в новой таблице - PullRequest
0 голосов
/ 30 января 2019

У меня есть запрос, который должен создать три полных итоговых поля на основе внешнего ключа TimesheetEntryID.

Я хотел бы создать временную таблицу с промежуточным итогом для каждого значения TimesheetEntryID.Однако, когда я запускаю свой запрос, Access запрашивает определенное значение для [Hours Accumulation Temporary] .TimesheetEntryID.Вместо этого я бы хотел, чтобы Access выполнил запрос для КАЖДОГО TimesheetEntryID.Так, что для каждого TimesheetEntryID создаются три полных итоговых поля.

Я не понимаю, почему мой запрос заставляет Access получить единственное значение для [Временное накопление часов] .TimesheetEntryID

My Query

1 Ответ

0 голосов
/ 30 января 2019

При выполнении коррелированных подзапросов используйте псевдонимы, чтобы различать источники с одинаковыми именами между внешним запросом и подзапросом.В настоящее время вы пытаетесь использовать очень таблицу, которую вы намереваетесь создать внутри запроса, когда фактически хотите указать на внешнее поле запроса: [Daily Timesheet].TimesheetEntryID.

Следовательно, просто настройте запрос с помощьюсоответствующие псевдонимы.Ниже показаны ссылки на все подзапросы с sub , присоединенными к соответствующей букве во внешнем запросе.Кроме того, добавлено дополнительное условие для совпадения с тем же EmployeeID :

SELECT e.EmployeeName, d.TimesheetEntryID, 
       (SELECT SUM(sub_d.VacationHoursUsed - sub_d.VacationHours)
        FROM [Daily Timesheet] sub_d
        WHERE sub_d.TimesheetEntryID <= d.TimesheetEntryID
          AND sub_d.EmployeeID = d.EmployeeID) AS VacationHoursAvailable,

       (SELECT SUM(sub_d.BankedHoursUsed - sub_d.BankedHours)
        FROM [Daily Timesheet] sub_d
        WHERE sub_d.TimesheetEntryID <= d.TimesheetEntryID
          AND sub_d.EmployeeID = d.EmployeeID) AS BankedHoursAvailable,

       (SELECT SUM(sub_d.PersonalHoursUsed - sub_d.PersonalHours)
        FROM [Daily Timesheet] sub_d
        WHERE sub_d.TimesheetEntryID <= d.TimesheetEntryID
          AND sub_d.EmployeeID = d.EmployeeID) AS PersonalHoursAvailable

INTO [Hours Accumulation Temporary]

FROM [Employee Master] e 
INNER JOIN [Daily Timesheet] d ON e.EmployeeID = d.EmployeeID

ORDER BY e.EmployeeID, d.TimesheetEntryID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...