MS Access запрос с использованием многих таблиц - PullRequest
3 голосов
/ 04 марта 2009

У меня есть база данных с 12 таблицами с данными о пенсиях сотрудников за январь-декабрь 2008 года. Я хочу получить общую пенсию за 12 месяцев для каждого сотрудника, складывая суммы из всех 12 таблиц (с января по декабрь).

Как мне написать запрос?

Ответы [ 2 ]

6 голосов
/ 04 марта 2009

Возможно, вы захотите пересмотреть эту схему, и вместо этого у вас будет одна таблица со столбцом для указания МЕСЯЦА и ГОДА.

Учитывая ваш текущий дизайн, ваш запрос должен выглядеть следующим образом (очевидно, подставляя собственные таблицы и имена полей):

Сначала создайте этот запрос и сохраните его как «Ежемесячные итоги»:

SELECT EmployeeId AS EmployeeNumber, SUM(Pension_Amount) AS Pension_Totals
FROM Pension_January
GROUP BY EmployeeId
UNION ALL
SELECT EmployeeId, SUM(Pension_Amount)
FROM Pension_February
GROUP BY EmployeeId
UNION ALL
.....Other months.....
UNION ALL
SELECT EmployeeId, SUM(Pension_Amount)
FROM Pension_December
GROUP BY EmployeeId;

Во-вторых, создайте еще один запрос, который ссылается на первый:

SELECT
  [Monthly Totals].EmployeeNumber,
  SUM([Monthly Totals].Pension_Totals) AS Employee_Total
FROM [Monthly Totals]
GROUP BY [Monthly Totals].EmployeeNumber;

Теперь сохраните второй запрос и запустите его. Это должно дать вам то, что вам нужно.

3 голосов
/ 04 марта 2009

С какой стати у вас 12 разных столов? Это принципиально плохой дизайн.

В любом случае ...

Select
  EmployeeID, Total2008 = Sum(Value)
From
  (Select EmployeeID, Value From JanuaryTable
  Union All
  Select EmployeeID, Value From FebruaryTable
  ...
  Select EmployeeID, Value From DecemberTable)
Group By
  EmployeeID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...