Microsoft Access에서 실행 중인 합계 쿼리를 만드는 방법

고급: 전문 코딩, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서는 Microsoft Access 데이터베이스(.mdb) 파일이나 Microsoft Access 데이터베이스(.accdb) 파일에 적용됩니다.

요약

이 문서에서는 실행 중인 합계 쿼리를 만드는 데 사용할 수 있는 두 가지 방법을 보여 줍니다. 실행 중인 합계 쿼리는 각 레코드의 합계가 해당 레코드와 이전 레코드의 합계인 쿼리입니다. 이 유형의 쿼리는 그래프 또는 보고서에서 레코드 그룹(또는 일정 기간 동안)에 대한 누적 합계를 표시하는 데 유용합니다.

참고 샘플 파일 Qrysmp00.exe 이 문서에서 사용되는 기술의 데모를 볼 수 있습니다.

추가 정보

방법 1

첫 번째 메서드는 쿼리에서 DSum 함수와 조건을 사용하여 시간이 지남에 따라 실행 중인 합계를 만듭니다. DSum 함수는 현재 레코드와 이전 레코드를 합산합니다. 쿼리가 다음 레코드로 이동하면 DSum 함수가 다시 실행되고 누적 합계가 업데이트됩니다.

다음 샘플 쿼리는 샘플 데이터베이스 Northwind의 Orders 테이블을 사용하여 1997년 매월 화물 비용의 실행 합계를 만듭니다. 샘플 데이터는 성능상의 이유로 1년으로 제한됩니다. DSum 함수는 쿼리의 모든 레코드에 대해 한 번 실행되므로 쿼리 처리를 완료하는 데 몇 초(컴퓨터 속도에 따라 다름)가 걸릴 수 있습니다. 이 쿼리를 만들고 실행하려면 다음 단계를 수행합니다.

  1. 샘플 데이터베이스 Northwind를 엽니다.

  2. 새 선택 쿼리를 만들고 Orders 테이블을 추가합니다.

  3. 보기 메뉴에서 합계를 클릭합니다.

    참고 Access 2007의 디자인 탭에 있는 표시/숨기기 그룹에서 합계를 클릭합니다.

  4. 쿼리 디자인 표의 첫 번째 열에서 필드 상자에 다음 식을 입력하고 합계, 정렬 및 표시 상자에 대해 다음을 선택합니다.

    Field: AYear: DatePart("yyyy",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    필드 상자의 식은 OrderDate 필드의 연도 부분을 표시하고 정렬합니다.

  5. 쿼리 디자인 표의 두 번째 열에서 필드 상자에 다음 식을 입력하고 합계, 정렬 및 표시 상자에 대해 다음을 선택합니다.

    Field: AMonth: DatePart("m",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    필드 상자의 식은 주문 날짜 필드의 월 부분을 1에서 12까지의 정수 값으로 정렬하고 표시합니다.

  6. 쿼리 디자인 표의 세 번째 열에 필드 상자에 다음 식을 입력하고 합계 및 표시 상자에 대해 다음을 선택합니다.

    참고 다음 예제에서는 줄 끝에 있는 밑줄(_)을 줄 연속 문자로 사용합니다. 이 예제를 다시 만들 때 줄 끝에서 밑줄을 제거합니다.

    Field: RunTot: DSum("Freight","Orders","DatePart('m', _
    [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _
    [OrderDate])<=" & [AYear] & "")
    Total: Expression
    Show: Yes
    

    필드 상자의 식은 DSum() 함수를 사용하여 AMonth 및 AYear 필드의 값이 쿼리가 처리 중인 현재 레코드보다 작거나 같을 때 Freight 필드를 합산합니다.

  7. 쿼리 디자인 표의 네 번째 열에 필드 상자에 다음 식을 입력하고 합계, 정렬 및 표시 상자에 대해 다음을 선택합니다.

    Field: FDate: Format([OrderDate],"mmm")
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    필드 상자의 식은 매월 1월, 2월, 3월 등의 텍스트 형식으로 표시됩니다.

  8. 쿼리 디자인 표의 다섯 번째 열에 필드 상자에 다음 식을 입력하고 합계, 조건 및 표시 상자에 대해 다음을 선택합니다.

    Field: DatePart("yyyy",[OrderDate])
    Total: Where
    Criteria: 1997
    Show: No
    

    필드 상자의 식은 1997의 데이터만 포함하도록 쿼리의 레코드 집합을 필터링합니다.

  9. 쿼리를 실행합니다. RunTot 필드는 실행 중인 합계가 있는 다음 레코드를 표시합니다.

    AYear AMonth RunTot FDate
    --------------------------------------
    1997 1 2238.98 Jan
    1997 2 3840.43 Feb
    1997 3 5729.24 Mar
    1997 4 8668.34 Apr
    1997 5 12129.74 May
    1997 6 13982.39 Jun
    1997 7 17729.29 Jul
    1997 8 22204.73 Aug
    1997 9 26565.26 Sep
    1997 10 32031.38 Oct
    1997 11 36192.09 Nov
    1997 12 42748.64 Dec
    

방법 2

두 번째 메서드는 DSum() 함수와 함께 합계 쿼리를 사용하여 그룹에 대해 실행 중인 합계를 만듭니다.

다음 샘플 쿼리는 Orders 테이블을 사용하여 직원당 화물 비용을 합산하고 화물의 실행 합계를 계산합니다. 쿼리를 만들고 실행하려면 다음 단계를 수행합니다.

  1. 샘플 데이터베이스 Northwind.mdb 엽니다.

  2. 새 선택 쿼리를 만들고 Orders 테이블을 추가합니다.

  3. 뷰메뉴에서 합계를 클릭합니다.

    참고 Access 2007의 디자인 탭에 있는 표시/숨기기 그룹에서 합계를 클릭합니다.

  4. 쿼리 디자인 표의 첫 번째 열에서 필드 상자에 다음 필드를 추가하고 요약 및 표시 상자에 대해 다음을 선택합니다.

    Field: EmpAlias: EmployeeID
    Total: Group By
    Show: Yes
    

    이 필드는 EmployeeID별로 데이터를 그룹화합니다.

  5. 쿼리 디자인 표의 두 번째 열에서 필드 상자에 다음 필드를 추가하고 합계 및 표시 상자에 대해 다음을 선택합니다.

    Field: Freight
    Total: Sum
    Show: Yes
    

    이 필드는 화물 데이터를 합산합니다.

  6. 쿼리 디자인 표의 세 번째 열에 필드 상자에 다음 식을 입력하고 합계 및 표시 상자에 대해 다음을 선택합니다.

    참고 다음 예제에서는 줄 끝에 있는 밑줄(_)을 줄 연속 문자로 사용합니다. 이 예제를 다시 만들 때 줄 끝에서 밑줄을 제거합니다.

    Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00")
    Total: Expression
    Show: Yes
    

    Field 상자의 식은 DSum() 함수를 사용하여 EmployeeID가 현재 EmpAlias보다 작거나 같을 때 화물 필드를 합산한 다음 필드의 형식을 달러로 지정합니다.

  7. 쿼리를 실행합니다. RunTot 필드는 실행 중인 합계가 있는 다음 레코드를 표시합니다.

    Employee SumOfFreight RunTot
    -------------------------------------------------
    Davolio, Nancy $8,836.64 $8,836.64
    Fuller, Andrew $8,696.41 $17,533.05
    Leverling,Janet $10,884.74 $28,417.79
    Peacock, Margaret $11,346.14 $39,763.93
    Buchanan, Steven $3,918.71 $43,682.64
    Suyama, Michael $3,780.47 $47,463.11
    King, Robert $6,665.44 $54,128.55
    Callahan, Laura $7,487.88 $61,616.43
    Dodsworth, Anne $3,326.26 $64,942.69