【问题标题】:MS access query using many tables使用多个表的 MS 访问查询
【发布时间】:2009-03-04 18:52:39
【问题描述】:

我有一个数据库,其中包含 12 个表格,其中包含 2008 年 1 月至 12 月员工的养老金详细信息。我想从所有 12 个表格(从 1 月到 12 月)加起来每个员工的 12 个月的总养老金。

我应该如何编写查询?

【问题讨论】:

  • 每月一张桌子?天啊。不应该这样做。

标签: sql ms-access


【解决方案1】:

您可能需要重新考虑这种设计,而是使用一个包含一列来指示 MONTH 和 YEAR 的表。

鉴于您当前的设计,您的查询需要如下所示(显然,替换为您自己的表和字段名称):

首先,创建此查询并将其保存为“每月总计”:

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;

现在保存第二个查询并运行它。它应该可以满足您的需求。

【讨论】:

    【解决方案2】:

    到底为什么你有 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
    

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 2016-06-19
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2014-03-30
      相关资源
      最近更新 更多