2009-03-04 3 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

당신은이 디자인을 재고하고, 대신 연도와 월을 표시하는 열이있는 단일 테이블을 할 수 있습니다.

먼저,이 쿼리를 생성하고 "월간 합계"로 저장 :

현재 디자인을 감안할 때, 쿼리는 (분명히, 자신의 테이블과 필드 이름을 대체)과 같이해야합니다

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

지금 두 번째 쿼리를 저장하고 실행

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; 

둘째, 첫 번째를 의미 다른 쿼리를 작성합니다. 그것은 당신에게 필요한 것을 제공해야합니다.