ACC: 그룹 쿼리 당 상위 N 값 만들기 방법

기술 자료 번역 기술 자료 번역
기술 자료: 153747 - 이 문서가 적용되는 제품 보기.
보통: 기본적인 매크로, 코드 작성 및 상호 운용성 기술이 필요합니다.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 쿼리를 그룹당 해당 상위 N 목록 항목을 만들 수 있습니다 두 가지 방법을 보여 줍니다. 이러한 메서드 중 하나를 사용하여 쿼리를 만들 수 있습니다. 그리고 예를 들어 있는 경우에만 상위 5개 판매원 각 영역에 대해 표시됩니다.

이 문서에서 설명하는 두 번째 방법은 VBA 및 Microsoft Access에서 제공하는 프로그래밍 도구를 사용하여 Microsoft Access 응용 프로그램을 만드는 알고 있다고 가정합니다. 응용 프로그램에 대한 VBA에 대한 자세한 내용은 "응용 프로그램을 사용하여 Microsoft 액세스 빌드" 수동 버전으로 참조하십시오.

추가 정보

쿼리에서 그룹 내에서 위쪽 N 항목만 표시하려면 쿼리에서 그룹화 열에 동적으로 읽고 항목이 열에 각 그룹 내의 상위 N 값 제한하는 조건을 지정해야 합니다. 방법 1 각 그룹에 대해 상위 N 항목 목록을 동적으로 생성하도록 SQL 하위 사용하고 조건으로 IN 연산자를 사용하여 항목을 열에 대해 이 목록을 사용합니다. 방법 2를 함께 사용되는 특정 그룹 내에서 N 번째 항목을 반환하는 사용자 정의 함수를 사용하는 경우 > = 연산자를 N번째 및 큰 항목을 반환합니다.

방법 1

다음은 CategoryID 당 위쪽 세 재고량과 표시하는 Northwind 예제 데이터베이스의 쿼리를 만드는 방법을 보여 줍니다. 쿼리는 특정 CategoryID 주어진 위쪽 세 재고량과 반환하는 SQL 하위 쿼리를 사용하고 주 쿼리에서 레코드를 제한하는 IN 연산자를 사용합니다.

참고: 5단계 조건을 예제에서는 위치 줄 끝의 밑줄 (_)은 줄 연속 문자로 사용됩니다. 기준을 다시 작성할 때는 줄 끝에서 밑줄을 삭제하십시오.

  1. Northwind.mdb 예제 데이터베이스를 엽니다.
  2. 쿼리 탭을 클릭한 다음 새로 만들기를 클릭하십시오.
  3. 디자인 보기를 클릭한 다음 확인을 클릭하십시오.
  4. 항목 및 Products 테이블 표시 대화 상자에서 추가할 테이블, 및 다음 닫기를 클릭합니다.
  5. 다음 필드를 쿼리 눈금으로 추가:
    필드: 범주
    정렬: 오름차순

    필드: ProductName

    필드: 재고량과
    정렬: 내림차순
    조건: 위치 (위쪽 [재고량과] 3 그림 제품 선택 위치 _
    [CategoryID] = [범주]. [CategoryID] 순서 [재고량과] Desc 기준)
  6. 쿼리를 실행하십시오. 쿼리에서 각 범주에 대해 위 세 가지 재고량과 반환하는 유의하십시오.

방법 2

다음 예제에서는 마지막 다섯 당 고객 주문을 표시하는 Northwind 샘플 데이터베이스에 쿼리를 만드는 방법을 보여 줍니다. 쿼리는 특정 CustomerID 주어진 다섯째 가장 최근의 주문일 반환하는 NthInGroup() 라는 조건을 함수를 사용합니다. 사용하여, > = 연산자는 이 함수 함께 다섯째 가장 최근의 주문일 이후에 각 고객이 주문한 있던 모든 주문을 반환합니다.

  1. Northwind.mdb 예제 데이터베이스를 엽니다.
  2. 새 모듈을 만들고 다음 줄을 선언 위해 추가 있이 있지 않은 경우 구역:
    명시적 옵션
  3. 다음 절차에서는 만듭니다:
          Function NthInGroup(GroupID, N)
          ' Returns the Nth Item in GroupID for use as a Top N per group
          ' query criteria.
          Static LastGroupId, LastNthInGroup
          Dim ItemName, GroupIDName, GDC, SearchTable
          Dim SQL As String, rs As Recordset, db As DATABASE
    
          If (LastGroupId = GroupID) Then
             ' Returned saved result if function is called with the
             ' same GroupID more than once in a row.
             NthInGroup = LastNthInGroup
          Else
             ' Set the SQL statement parameters. These are the only items
             ' that need to be customized in this function.
             ' Set to Item field name.
             ItemName = "OrderDate"
             ' Set to Group ID field name.
             GroupIDName = "CustomerID"
             ' GroupID Delimiter Character:
             ' For Text use "'" (Note that this is a quotation mark, a space,
             ' an apostrophe, a space, and then a quotation mark. The spaces
             ' are necessary for SQL statements), Date "#", Numeric ""
             GDC = "'"
             ' Set to search table.
             SearchTable = "Orders"
             ' Build a Top N SQL statement dynamically given N and
             ' GroupID as parameters. Note that the sort is by the
             ' item in descending order, in order to get the Top N
             ' largest items.
             SQL = "Select Top " & N & " [" & ItemName & "] "
             SQL = SQL & "From [" & SearchTable & "] "
             SQL = SQL & "Where [" & GroupIDName & "]=" & GDC & GroupID & GDC _
                & " "
             SQL = SQL & "Order By [" & ItemName & "] Desc"
             ' Open up recordset on Top N SQL statement and read the
             ' last record to get the smallest item in the Top N.
             Set db = CurrentDb()
             Set rs = db.OpenRecordset(SQL)
             If (rs.BOF And rs.EOF) Then
                ' No matches found, return a null.
                LastNthInGroup = Null
                LastGroupId = GroupID
                NthInGroup = LastNthInGroup
                Else
                   ' Return the smallest Top N item in the group.
                   rs.MoveLast
                   LastNthInGroup = rs(ItemName)
                   LastGroupId = GroupID
                   NthInGroup = LastNthInGroup
                 End If
              End If
    
           End Function
    						
  4. 모듈을 컴파일할 및 다음 닫고 모듈을 basTopN 파일로 저장하십시오.
  5. 쿼리 탭을 클릭한 다음 새로 만들기를 클릭하십시오.
  6. 디자인 보기를 클릭한 다음 확인을 클릭하십시오.
  7. 테이블 표시 대화 상자에서 Customers 및 Orders 테이블을 추가하십시오. 닫기를 클릭하십시오.
  8. 다음 필드를 쿼리 눈금으로 추가:
    필드: CustomerID
    정렬: 오름차순


    필드: OrderID

    수주일 필드:
    정렬: 내림차순
    조건: > = NthInGroup([Customers].[CustomerID],5)
  9. 쿼리를 실행하십시오. 최소한 다섯 개의 주문을 할 모든 고객을 위해 5개의 가장 최근 주문이 쿼리가 반환할 유의하십시오. 5개 미만의 주문 고객과 쿼리에서 모든 주문을 반환합니다.

참조

하위 쿼리에 대한 자세한 내용은 다음 하위 쿼리SQL 하위 쿼리 를 Microsoft Access 97 도움말 색인을 사용하여 검색할.

속성

기술 자료: 153747 - 마지막 검토: 2007년 1월 19일 금요일 - 수정: 3.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
키워드:?
kbmt kbhowto kbprogramming KB153747 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com