2009-03-04 7 views
3

2008年1月から12月の年金の詳細を12テーブルにまとめたデータベースがあります。12カ月間の合計12カ月分decを介して)。多くのテーブルを使用したMSアクセスクエリ

どのようにクエリを記述しますか?

+0

月に1つのテーブル?ああ、私。それはやってはいけないことです。 – duffymo

答えて

3

なぜ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 
6

あなたはこのデザインを再考したい、と代わりに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番目のクエリを保存し、それを実行します。それはあなたに必要なものを与えるはずです。